gas_cylinder.go 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. package service
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "fmt"
  6. "gas-cylinder-api/app/admin/model"
  7. "gas-cylinder-api/app/admin/service/dto"
  8. "gas-cylinder-api/common/actions"
  9. cDto "gas-cylinder-api/common/dto"
  10. "gas-cylinder-api/common/global"
  11. model2 "gas-cylinder-api/common/model"
  12. "github.com/go-resty/resty/v2"
  13. "gogs.baozhida.cn/zoie/OAuth-core/service"
  14. "gorm.io/gorm"
  15. "math/rand"
  16. "time"
  17. )
  18. type GasCylinder struct {
  19. service.Service
  20. }
  21. // GetPage 获取GasCylinder列表
  22. func (e *GasCylinder) GetPage(c *dto.GasCylinderGetPageReq, list *[]model.GasCylinder, count *int64, p *actions.DataPermission) error {
  23. var err error
  24. var data model.GasCylinder
  25. err = e.Orm.Model(&data).
  26. Scopes(
  27. cDto.MakeCondition(c.GetNeedSearch()),
  28. cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
  29. actions.Permission(data.TableName(), p),
  30. ).
  31. Find(list).Limit(-1).Offset(-1).
  32. Count(count).Error
  33. if err != nil {
  34. e.Log.Errorf("db error: %s", err)
  35. return global.GetFailedErr
  36. }
  37. return nil
  38. }
  39. // Get 获取GasCylinder对象
  40. func (e *GasCylinder) Get(d *dto.GasCylinderGetReq, data *model.ProvGasCylinder, p *actions.DataPermission) error {
  41. // TODO 通过省平台获取气瓶详情
  42. client := resty.New()
  43. resp, err := client.R().Get("https://mock.apifox.com/m2/4037076-0-default/151344663")
  44. if err != nil {
  45. e.Log.Errorf("db error: %s", err)
  46. return global.GetFailedErr
  47. }
  48. err = json.Unmarshal(resp.Body(), data)
  49. if err != nil {
  50. e.Log.Errorf("json Unmarshal err: %s", err)
  51. return global.GetFailedErr
  52. }
  53. obj := model.GasCylinder{
  54. ProVariety: data.ProVariety,
  55. ProName: data.ProName,
  56. ProNo: data.ProNo,
  57. FillMedia: data.FillMedia,
  58. MakeUnit: data.MakeUnit,
  59. MakeTime: data.MakeTime,
  60. WorkPressure: data.WorkPressure,
  61. //InnerCode: data.InnerCode,
  62. Volume: data.Volume,
  63. CheckTime: data.CheckTime,
  64. NextCheckTime: data.NextCheckTime,
  65. ProUuid: data.ProUuid,
  66. //Uid: data.Uid,
  67. ProductId: data.ProductId,
  68. DeadlineTime: data.DeadlineTime,
  69. CheckInTime: data.CheckInTime,
  70. DeptBy: model2.DeptBy{
  71. DeptId: p.DeptId,
  72. },
  73. }
  74. //e.Orm.Create(&obj)
  75. err = e.Orm.Where("inner_code = ?", d.GetInnerCode()).Updates(&obj).Error
  76. if err != nil {
  77. e.Log.Errorf("db error: %s", err)
  78. if errors.Is(err, gorm.ErrRecordNotFound) {
  79. return global.GetNotFoundOrNoPermissionErr
  80. }
  81. return global.GetFailedErr
  82. }
  83. data.InnerCode = d.InnerCode
  84. return nil
  85. }
  86. func (e *GasCylinder) GetByUid(d *dto.GasCylinderGetByUidReq, data *model.ProvGasCylinder, p *actions.DataPermission) error {
  87. // TODO 通过省平台获取气瓶详情
  88. client := resty.New()
  89. // 1、通过高频ID查询气瓶内编码
  90. var gasCylinder model.GasCylinder
  91. err := e.Orm.Where("uid = ?", d.ChipUid).First(&gasCylinder).Error
  92. if err != nil {
  93. e.Log.Errorf("db error: %s", err)
  94. return global.CreateFailedErr
  95. }
  96. resp, err := client.R().Get("https://mock.apifox.com/m2/4037076-0-default/151344663")
  97. if err != nil {
  98. e.Log.Errorf("db error: %s", err)
  99. return global.GetFailedErr
  100. }
  101. err = json.Unmarshal(resp.Body(), data)
  102. if err != nil {
  103. e.Log.Errorf("json Unmarshal err: %s", err)
  104. return global.GetFailedErr
  105. }
  106. obj := model.GasCylinder{
  107. ProVariety: data.ProVariety,
  108. ProName: data.ProName,
  109. ProNo: data.ProNo,
  110. FillMedia: data.FillMedia,
  111. MakeUnit: data.MakeUnit,
  112. MakeTime: data.MakeTime,
  113. WorkPressure: data.WorkPressure,
  114. //InnerCode: data.InnerCode,
  115. Volume: data.Volume,
  116. CheckTime: data.CheckTime,
  117. NextCheckTime: data.NextCheckTime,
  118. ProUuid: data.ProUuid,
  119. //Uid: data.Uid,
  120. ProductId: data.ProductId,
  121. DeadlineTime: data.DeadlineTime,
  122. CheckInTime: data.CheckInTime,
  123. DeptBy: model2.DeptBy{
  124. DeptId: p.DeptId,
  125. },
  126. }
  127. //e.Orm.Create(&obj)
  128. err = e.Orm.Where("inner_code = ?", gasCylinder.InnerCode).Updates(&obj).Error
  129. if err != nil {
  130. e.Log.Errorf("db error: %s", err)
  131. if errors.Is(err, gorm.ErrRecordNotFound) {
  132. return global.GetNotFoundOrNoPermissionErr
  133. }
  134. return global.GetFailedErr
  135. }
  136. data.InnerCode = gasCylinder.InnerCode
  137. data.Uid = gasCylinder.Uid
  138. return nil
  139. }
  140. func (e *GasCylinder) Mock(d *dto.GasCylinderMockReq) error {
  141. // TODO 通过省平台获取气瓶详情
  142. for i := 0; i < 20; i++ {
  143. rand.New(rand.NewSource(time.Now().UnixNano()))
  144. // 生成随机数后八位
  145. randomSuffix := rand.Intn(9999999999999999)
  146. randomSuffix2 := rand.Intn(999999999999)
  147. // 组合成16位随机数
  148. InnerCode := fmt.Sprintf("%16d", randomSuffix)
  149. uid := fmt.Sprintf("%12d", randomSuffix2)
  150. client := resty.New()
  151. resp, err := client.R().Get("https://mock.apifox.com/m2/4037076-0-default/151344663")
  152. if err != nil {
  153. e.Log.Errorf("db error: %s", err)
  154. return global.GetFailedErr
  155. }
  156. var data model.GasCylinder
  157. err = json.Unmarshal(resp.Body(), &data)
  158. if err != nil {
  159. e.Log.Errorf("json Unmarshal err: %s", err)
  160. return global.GetFailedErr
  161. }
  162. obj := model.GasCylinder{
  163. ProVariety: data.ProVariety,
  164. ProName: data.ProName,
  165. ProNo: data.ProNo,
  166. FillMedia: data.FillMedia,
  167. MakeUnit: data.MakeUnit,
  168. MakeTime: data.MakeTime,
  169. WorkPressure: data.WorkPressure,
  170. InnerCode: InnerCode,
  171. Volume: data.Volume,
  172. CheckTime: data.CheckTime,
  173. NextCheckTime: data.NextCheckTime,
  174. ProUuid: data.ProUuid,
  175. Uid: uid,
  176. ProductId: data.ProductId,
  177. DeadlineTime: data.DeadlineTime,
  178. CheckInTime: data.CheckInTime,
  179. DeptBy: model2.DeptBy{
  180. DeptId: d.DeptId,
  181. },
  182. }
  183. err = e.Orm.Create(&obj).Error
  184. if err != nil {
  185. e.Log.Errorf("db error: %s", err)
  186. return global.GetFailedErr
  187. }
  188. }
  189. return nil
  190. }