fill_data.go 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. package service
  2. import (
  3. "errors"
  4. "gas-cylinder-api/app/admin/model"
  5. "gas-cylinder-api/app/admin/service/dto"
  6. "gas-cylinder-api/common/actions"
  7. cDto "gas-cylinder-api/common/dto"
  8. "gas-cylinder-api/common/global"
  9. "github.com/alibaba/sentinel-golang/util"
  10. "gogs.baozhida.cn/zoie/OAuth-core/service"
  11. "gorm.io/gorm"
  12. "time"
  13. )
  14. type FillData struct {
  15. service.Service
  16. }
  17. func FillDataStationId(stationId string) func(db *gorm.DB) *gorm.DB {
  18. return func(db *gorm.DB) *gorm.DB {
  19. if len(stationId) == 0 {
  20. return db
  21. }
  22. return db.Where("JSON_EXTRACT(tb_fill_data, '$.stationId') = ? ", stationId)
  23. }
  24. }
  25. func FillDataUserId(userId string) func(db *gorm.DB) *gorm.DB {
  26. return func(db *gorm.DB) *gorm.DB {
  27. if len(userId) == 0 {
  28. return db
  29. }
  30. return db.Where("JSON_EXTRACT(tb_fill_data, '$.userId') = ? ", userId)
  31. }
  32. }
  33. func FillDataInnerCode(innerCode string) func(db *gorm.DB) *gorm.DB {
  34. return func(db *gorm.DB) *gorm.DB {
  35. if len(innerCode) == 0 {
  36. return db
  37. }
  38. return db.Where("JSON_EXTRACT(tb_fill_data, '$.innerCode') like %?% ", innerCode)
  39. }
  40. }
  41. func FillDataChipId(chipId string) func(db *gorm.DB) *gorm.DB {
  42. return func(db *gorm.DB) *gorm.DB {
  43. if len(chipId) == 0 {
  44. return db
  45. }
  46. return db.Where("JSON_EXTRACT(tb_fill_data, '$.chipId') like %?% ", chipId)
  47. }
  48. }
  49. func FillDataStartFillTime(startFillTime string) func(db *gorm.DB) *gorm.DB {
  50. return func(db *gorm.DB) *gorm.DB {
  51. if len(startFillTime) == 0 {
  52. return db
  53. }
  54. return db.Where("JSON_EXTRACT(tb_fill_data, '$.fillTime') >=? ", startFillTime)
  55. }
  56. }
  57. func FillDataEndFillTime(endFillTime string) func(db *gorm.DB) *gorm.DB {
  58. return func(db *gorm.DB) *gorm.DB {
  59. if len(endFillTime) == 0 {
  60. return db
  61. }
  62. return db.Where("JSON_EXTRACT(tb_fill_data, '$.fillTime') <= ?", endFillTime)
  63. }
  64. }
  65. // GetPage 获取FillData列表
  66. func (e *FillData) GetPage(c *dto.FillDataGetPageReq, list *[]model.FillData, count *int64, p *actions.DataPermission) error {
  67. var err error
  68. var data model.FillData
  69. err = e.Orm.Model(&data).
  70. Scopes(
  71. FillDataStationId(c.StationId),
  72. FillDataUserId(c.UserId),
  73. FillDataInnerCode(c.InnerCode),
  74. FillDataChipId(c.ChipId),
  75. FillDataStartFillTime(c.StartFillTime),
  76. FillDataEndFillTime(c.EndFillTime),
  77. cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
  78. actions.Permission(data.TableName(), p),
  79. ).
  80. Preload("User").Preload("Station").Preload("Company").
  81. Find(list).Limit(-1).Offset(-1).
  82. Count(count).Error
  83. if err != nil {
  84. e.Log.Errorf("db error: %s", err)
  85. return global.GetFailedErr
  86. }
  87. return nil
  88. }
  89. // Insert 创建FillData对象
  90. func (e *FillData) Insert(c *dto.FillDataInsertReq, fillGun model.FillGun) error {
  91. var err error
  92. // 通过高频id查询气瓶编码
  93. var gasCylinder model.GasCylinder
  94. err = e.Orm.Where("uid = ?", c.ChipUid).First(&gasCylinder).Error
  95. if err != nil {
  96. e.Log.Errorf("获取气瓶信息(chip_id:%s)失败: %s", c.ChipUid, err)
  97. return errors.New("气瓶编码不存在")
  98. }
  99. now := time.Now()
  100. data := model.FillData{
  101. Status: 2,
  102. StationId: fillGun.Dept.CmpCode,
  103. CompanyId: fillGun.Dept.CmpCode,
  104. UserId: fillGun.PersonCode,
  105. GasLog: model.TbGasLog{
  106. Id: util.NewUuid(),
  107. GunCode: fillGun.GunCode,
  108. //PersonFlag:1,
  109. //ChipFlag:1,
  110. //OpenStatus:1,
  111. InnerCode: gasCylinder.InnerCode,
  112. PersonCode: fillGun.PersonCode,
  113. ChipId: c.ChipUid,
  114. CreateTime: now.Format("2006-01-02 15:04:05"),
  115. },
  116. TbFillData: model.TbFillData{
  117. FillId: util.NewUuid(),
  118. GunCode: fillGun.GunCode,
  119. StationId: fillGun.Dept.CmpCode,
  120. CompanyId: fillGun.Dept.CmpCode,
  121. Area: fillGun.Dept.ProvStore.District,
  122. City: fillGun.Dept.ProvStore.City,
  123. //PersonFlag:1,
  124. //ChipFlag:1,
  125. //OpenStatus:1,
  126. InnerCode: gasCylinder.InnerCode,
  127. UserId: fillGun.PersonCode,
  128. ChipId: c.ChipUid,
  129. ProductMediaId: gasCylinder.FillMedia,
  130. FillTime: now.Format("2006-01-02 15:04:05"),
  131. CreateTime: now.Format("2006-01-02 15:04:05"),
  132. },
  133. }
  134. data.SetDeptId(gasCylinder.DeptId)
  135. tx := e.Orm.Begin()
  136. defer func() {
  137. if err != nil {
  138. tx.Rollback()
  139. } else {
  140. tx.Commit()
  141. }
  142. }()
  143. // TODO 同步省平台 1.1.1.24上报充装记录
  144. err = tx.Create(&data).Error
  145. if err != nil {
  146. e.Log.Errorf("db error: %s", err)
  147. return global.UpdateFailedErr
  148. }
  149. c.Id = data.Id
  150. return nil
  151. }
  152. func (e *FillData) GetStationList(list *[]model.FillDataDistinctStation, count *int64, p *actions.DataPermission) error {
  153. var err error
  154. var data model.FillData
  155. err = e.Orm.Model(&data).
  156. Scopes(
  157. actions.Permission(data.TableName(), p),
  158. ).
  159. Distinct("station_id").Preload("Station").
  160. Find(list).
  161. Count(count).Error
  162. if err != nil {
  163. e.Log.Errorf("db error: %s", err)
  164. return global.GetFailedErr
  165. }
  166. return nil
  167. }
  168. func (e *FillData) GetUserList(list *[]model.FillDataDistinctUser, count *int64, p *actions.DataPermission) error {
  169. var err error
  170. var data model.FillData
  171. err = e.Orm.Model(&data).
  172. Scopes(
  173. actions.Permission(data.TableName(), p),
  174. ).
  175. Distinct("user_id").Preload("User").
  176. Find(list).
  177. Count(count).Error
  178. if err != nil {
  179. e.Log.Errorf("db error: %s", err)
  180. return global.GetFailedErr
  181. }
  182. return nil
  183. }