gas_cylinder.go 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331
  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.GasCylinder, p *actions.DataPermission) error {
  41. // TODO 通过省平台获取气瓶详情
  42. //client := resty.New()
  43. //
  44. //resp, err := client.R().Get("https://mock.apifox.com/m2/4037076-0-default/151344663")
  45. //if err != nil {
  46. // e.Log.Errorf("db error: %s", err)
  47. // return global.GetFailedErr
  48. //}
  49. //err = json.Unmarshal(resp.Body(), data)
  50. //if err != nil {
  51. // e.Log.Errorf("json Unmarshal err: %s", err)
  52. // return global.GetFailedErr
  53. //}
  54. //obj := model.GasCylinder{
  55. // ProVariety: data.ProVariety,
  56. // ProName: data.ProName,
  57. // ProNo: data.ProNo,
  58. // FillMedia: data.FillMedia,
  59. // MakeUnit: data.MakeUnit,
  60. // MakeTime: data.MakeTime,
  61. // WorkPressure: data.WorkPressure,
  62. // //InnerCode: data.InnerCode,
  63. // Volume: data.Volume,
  64. // CheckTime: data.CheckTime,
  65. // NextCheckTime: data.NextCheckTime,
  66. // ProUuid: data.ProUuid,
  67. // //Uid: data.Uid,
  68. // ProductId: data.ProductId,
  69. // DeadlineTime: data.DeadlineTime,
  70. // CheckInTime: data.CheckInTime,
  71. // DeptBy: model2.DeptBy{
  72. // DeptId: p.DeptId,
  73. // },
  74. //}
  75. ////e.Orm.Create(&obj)
  76. //
  77. //err = e.Orm.Where("inner_code = ?", d.GetInnerCode()).Updates(&obj).Error
  78. //if err != nil {
  79. // e.Log.Errorf("db error: %s", err)
  80. // if errors.Is(err, gorm.ErrRecordNotFound) {
  81. // return global.GetNotFoundOrNoPermissionErr
  82. // }
  83. // return global.GetFailedErr
  84. //}
  85. //
  86. //data.InnerCode = d.InnerCode
  87. err := e.Orm.Where("inner_code = ?", d.GetInnerCode()).First(&data).Error
  88. if err != nil {
  89. e.Log.Errorf("db error: %s", err)
  90. return global.GetFailedErr
  91. }
  92. return nil
  93. }
  94. func (e *GasCylinder) GetByUid(d *dto.GasCylinderGetByUidReq, data *model.GasCylinder, p *actions.DataPermission) error {
  95. // 1、通过高频ID查询气瓶内编码
  96. err := e.Orm.Where("uid = ?", d.ChipUid).First(&data).Error
  97. if err != nil {
  98. e.Log.Errorf("db error: %s", err)
  99. return global.GetFailedErr
  100. }
  101. //client := resty.New()
  102. //resp, err := client.R().Get("https://mock.apifox.com/m2/4037076-0-default/151344663")
  103. //if err != nil {
  104. // e.Log.Errorf("db error: %s", err)
  105. // return global.GetFailedErr
  106. //}
  107. //err = json.Unmarshal(resp.Body(), data)
  108. //if err != nil {
  109. // e.Log.Errorf("json Unmarshal err: %s", err)
  110. // return global.GetFailedErr
  111. //}
  112. //obj := model.GasCylinder{
  113. // ProVariety: data.ProVariety,
  114. // ProName: data.ProName,
  115. // ProNo: data.ProNo,
  116. // FillMedia: data.FillMedia,
  117. // MakeUnit: data.MakeUnit,
  118. // MakeTime: data.MakeTime,
  119. // WorkPressure: data.WorkPressure,
  120. // //InnerCode: data.InnerCode,
  121. // Volume: data.Volume,
  122. // CheckTime: data.CheckTime,
  123. // NextCheckTime: data.NextCheckTime,
  124. // ProUuid: data.ProUuid,
  125. // //Uid: data.Uid,
  126. // ProductId: data.ProductId,
  127. // DeadlineTime: data.DeadlineTime,
  128. // CheckInTime: data.CheckInTime,
  129. // DeptBy: model2.DeptBy{
  130. // DeptId: p.DeptId,
  131. // },
  132. //}
  133. ////e.Orm.Create(&obj)
  134. //
  135. //err = e.Orm.Where("inner_code = ?", gasCylinder.InnerCode).Updates(&obj).Error
  136. //if err != nil {
  137. // e.Log.Errorf("db error: %s", err)
  138. // if errors.Is(err, gorm.ErrRecordNotFound) {
  139. // return global.GetNotFoundOrNoPermissionErr
  140. // }
  141. // return global.GetFailedErr
  142. //}
  143. //
  144. //data.InnerCode = gasCylinder.InnerCode
  145. //data.Uid = gasCylinder.Uid
  146. return nil
  147. }
  148. func (e *GasCylinder) Mock(d *dto.GasCylinderMockReq) error {
  149. for i := 0; i < 20; i++ {
  150. rand.New(rand.NewSource(time.Now().UnixNano()))
  151. // 生成随机数后八位
  152. randomSuffix := rand.Intn(9999999999999999)
  153. randomSuffix2 := rand.Intn(999999999999)
  154. // 组合成16位随机数
  155. InnerCode := fmt.Sprintf("%16d", randomSuffix)
  156. uid := fmt.Sprintf("%12d", randomSuffix2)
  157. client := resty.New()
  158. resp, err := client.R().Get("https://mock.apifox.com/m2/4037076-0-default/151344663")
  159. if err != nil {
  160. e.Log.Errorf("db error: %s", err)
  161. return global.GetFailedErr
  162. }
  163. var data model.GasCylinder
  164. err = json.Unmarshal(resp.Body(), &data)
  165. if err != nil {
  166. e.Log.Errorf("json Unmarshal err: %s", err)
  167. return global.GetFailedErr
  168. }
  169. obj := model.GasCylinder{
  170. ProVariety: data.ProVariety,
  171. ProName: data.ProName,
  172. ProNo: data.ProNo,
  173. FillMedia: data.FillMedia,
  174. MakeUnit: data.MakeUnit,
  175. MakeTime: data.MakeTime,
  176. WorkPressure: data.WorkPressure,
  177. InnerCode: InnerCode,
  178. Volume: data.Volume,
  179. CheckTime: data.CheckTime,
  180. NextCheckTime: data.NextCheckTime,
  181. ProUuid: data.ProUuid,
  182. Uid: uid,
  183. DeptBy: model2.DeptBy{
  184. DeptId: d.DeptId,
  185. },
  186. }
  187. err = e.Orm.Create(&obj).Error
  188. if err != nil {
  189. e.Log.Errorf("db error: %s", err)
  190. return global.GetFailedErr
  191. }
  192. }
  193. return nil
  194. }
  195. // Insert 创建GasCylinder对象
  196. func (e *GasCylinder) Insert(c *dto.GasCylinderInsertReq) error {
  197. var err error
  198. var data model.GasCylinder
  199. tx := e.Orm.Begin()
  200. defer func() {
  201. if err != nil {
  202. tx.Rollback()
  203. } else {
  204. tx.Commit()
  205. }
  206. }()
  207. err = e.Orm.Where("inner_code = ? AND dept_id = ?", c.InnerCode, c.DeptId).First(&data).Error
  208. if err != nil {
  209. if errors.Is(err, gorm.ErrRecordNotFound) {
  210. // 添加气瓶
  211. c.Generate(&data)
  212. err = tx.Create(&data).Error
  213. if err != nil {
  214. e.Log.Errorf("db error: %s", err)
  215. return global.CreateFailedErr
  216. }
  217. c.Id = data.Id
  218. return nil
  219. }
  220. e.Log.Errorf("db error: %s", err)
  221. return global.GetFailedErr
  222. }
  223. c.Generate(&data)
  224. err = tx.Save(&data).Error
  225. if err != nil {
  226. e.Log.Errorf("db error: %s", err)
  227. return global.UpdateFailedErr
  228. }
  229. c.Id = data.Id
  230. return nil
  231. }
  232. // Update 修改GasCylinder对象
  233. func (e *GasCylinder) Update(c *dto.GasCylinderUpdateReq, p *actions.DataPermission) error {
  234. var err error
  235. tx := e.Orm.Begin()
  236. defer func() {
  237. if err != nil {
  238. tx.Rollback()
  239. } else {
  240. tx.Commit()
  241. }
  242. }()
  243. var gasCylinderModel = model.GasCylinder{}
  244. // 查询气瓶是否存在
  245. err = e.Orm.Scopes(actions.Permission(gasCylinderModel.TableName(), p)).
  246. First(&gasCylinderModel, c.GetId()).Error
  247. if err != nil {
  248. e.Log.Errorf("db error: %s", err)
  249. if errors.Is(err, gorm.ErrRecordNotFound) {
  250. return global.UpdateNotFoundOrNoPermissionErr
  251. }
  252. return global.UpdateFailedErr
  253. }
  254. c.Generate(&gasCylinderModel)
  255. err = tx.Save(&gasCylinderModel).Error
  256. if err != nil {
  257. e.Log.Errorf("db error: %s", err)
  258. return global.UpdateFailedErr
  259. }
  260. c.Id = gasCylinderModel.Id
  261. return nil
  262. }
  263. // Remove 删除GasCylinder
  264. func (e *GasCylinder) Remove(c *dto.GasCylinderDeleteReq, p *actions.DataPermission) error {
  265. var err error
  266. tx := e.Orm.Begin()
  267. defer func() {
  268. if err != nil {
  269. tx.Rollback()
  270. } else {
  271. tx.Commit()
  272. }
  273. }()
  274. var gasCylinderModel model.GasCylinder
  275. // 查询气瓶是否存在
  276. err = e.Orm.Scopes(actions.Permission(gasCylinderModel.TableName(), p)).
  277. First(&gasCylinderModel, c.GetId()).Error
  278. if err != nil {
  279. e.Log.Errorf("db error: %s", err)
  280. if errors.Is(err, gorm.ErrRecordNotFound) {
  281. return global.DeleteNotFoundOrNoPermissionErr
  282. }
  283. return global.DeleteFailedErr
  284. }
  285. db := tx.Delete(&gasCylinderModel)
  286. if err = db.Error; err != nil {
  287. e.Log.Errorf("db error: %s", err)
  288. return global.DeleteFailedErr
  289. }
  290. if db.RowsAffected == 0 {
  291. return global.DeleteNotFoundOrNoPermissionErr
  292. }
  293. return nil
  294. }