fill_data.go 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  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. cDto.MakeCondition(c.GetNeedSearch()),
  74. FillDataInnerCode(c.InnerCode),
  75. FillDataChipId(c.ChipId),
  76. FillDataStartFillTime(c.StartFillTime),
  77. FillDataEndFillTime(c.EndFillTime),
  78. cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
  79. actions.Permission(data.TableName(), p),
  80. ).
  81. Preload("User").Preload("Station").Preload("Company").
  82. Find(list).Limit(-1).Offset(-1).
  83. Count(count).Error
  84. if err != nil {
  85. e.Log.Errorf("db error: %s", err)
  86. return global.GetFailedErr
  87. }
  88. return nil
  89. }
  90. // Insert 创建FillData对象
  91. func (e *FillData) Insert(c *dto.FillDataInsertReq, fillGun model.FillGun) error {
  92. var err error
  93. // 通过高频id查询气瓶编码
  94. var gasCylinder model.GasCylinder
  95. err = e.Orm.Where("uid = ?", c.ChipUid).First(&gasCylinder).Error
  96. if err != nil {
  97. e.Log.Errorf("获取气瓶信息(chip_id:%s)失败: %s", c.ChipUid, err)
  98. return errors.New("气瓶编码不存在")
  99. }
  100. now := time.Now()
  101. data := model.FillData{
  102. Status: 2,
  103. StationId: fillGun.Dept.CmpCode,
  104. CompanyId: fillGun.Dept.CmpCode,
  105. UserId: fillGun.PersonCode,
  106. GasLog: model.TbGasLog{
  107. Id: util.NewUuid(),
  108. GunCode: fillGun.GunCode,
  109. //PersonFlag:1,
  110. //ChipFlag:1,
  111. //OpenStatus:1,
  112. InnerCode: gasCylinder.InnerCode,
  113. PersonCode: fillGun.PersonCode,
  114. ChipId: c.ChipUid,
  115. CreateTime: now.Format("2006-01-02 15:04:05"),
  116. },
  117. TbFillData: model.TbFillData{
  118. FillId: util.NewUuid(),
  119. GunCode: fillGun.GunCode,
  120. StationId: fillGun.Dept.CmpCode,
  121. CompanyId: fillGun.Dept.CmpCode,
  122. Area: fillGun.Dept.ProvStore.District,
  123. City: fillGun.Dept.ProvStore.City,
  124. //PersonFlag:1,
  125. //ChipFlag:1,
  126. //OpenStatus:1,
  127. InnerCode: gasCylinder.InnerCode,
  128. UserId: fillGun.PersonCode,
  129. ChipId: c.ChipUid,
  130. //ProductMediaId: gasCylinder.FillMedia,
  131. FillTime: now.Format("2006-01-02 15:04:05"),
  132. CreateTime: now.Format("2006-01-02 15:04:05"),
  133. },
  134. }
  135. data.SetDeptId(gasCylinder.DeptId)
  136. tx := e.Orm.Begin()
  137. defer func() {
  138. if err != nil {
  139. tx.Rollback()
  140. } else {
  141. tx.Commit()
  142. }
  143. }()
  144. // TODO 同步省平台 1.1.1.24上报充装记录
  145. err = tx.Create(&data).Error
  146. if err != nil {
  147. e.Log.Errorf("db error: %s", err)
  148. return global.UpdateFailedErr
  149. }
  150. c.Id = data.Id
  151. return nil
  152. }
  153. func (e *FillData) GetStationList(list *[]model.FillDataDistinctStation, count *int64, p *actions.DataPermission) error {
  154. var err error
  155. var data model.FillData
  156. err = e.Orm.Model(&data).
  157. Scopes(
  158. actions.Permission(data.TableName(), p),
  159. ).
  160. Distinct("station_id").Preload("Station").
  161. Find(list).
  162. Count(count).Error
  163. if err != nil {
  164. e.Log.Errorf("db error: %s", err)
  165. return global.GetFailedErr
  166. }
  167. return nil
  168. }
  169. func (e *FillData) GetUserList(list *[]model.FillDataDistinctUser, count *int64, p *actions.DataPermission) error {
  170. var err error
  171. var data model.FillData
  172. err = e.Orm.Model(&data).
  173. Scopes(
  174. actions.Permission(data.TableName(), p),
  175. ).
  176. Distinct("user_id").Preload("User").
  177. Find(list).
  178. Count(count).Error
  179. if err != nil {
  180. e.Log.Errorf("db error: %s", err)
  181. return global.GetFailedErr
  182. }
  183. return nil
  184. }