123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- package service
- import (
- "errors"
- "gas-cylinder-api/app/admin/model"
- "gas-cylinder-api/app/admin/service/dto"
- "gas-cylinder-api/common/actions"
- cDto "gas-cylinder-api/common/dto"
- "gas-cylinder-api/common/global"
- "github.com/alibaba/sentinel-golang/util"
- "gogs.baozhida.cn/zoie/OAuth-core/service"
- "gorm.io/gorm"
- "time"
- )
- type FillData struct {
- service.Service
- }
- func FillDataStationId(stationId string) func(db *gorm.DB) *gorm.DB {
- return func(db *gorm.DB) *gorm.DB {
- if len(stationId) == 0 {
- return db
- }
- return db.Where("JSON_EXTRACT(tb_fill_data, '$.stationId') = ? ", stationId)
- }
- }
- func FillDataUserId(userId string) func(db *gorm.DB) *gorm.DB {
- return func(db *gorm.DB) *gorm.DB {
- if len(userId) == 0 {
- return db
- }
- return db.Where("JSON_EXTRACT(tb_fill_data, '$.userId') = ? ", userId)
- }
- }
- func FillDataInnerCode(innerCode string) func(db *gorm.DB) *gorm.DB {
- return func(db *gorm.DB) *gorm.DB {
- if len(innerCode) == 0 {
- return db
- }
- return db.Where("JSON_EXTRACT(tb_fill_data, '$.innerCode') like ? ", "%"+innerCode+"%")
- }
- }
- func FillDataChipId(chipId string) func(db *gorm.DB) *gorm.DB {
- return func(db *gorm.DB) *gorm.DB {
- if len(chipId) == 0 {
- return db
- }
- return db.Where("JSON_EXTRACT(tb_fill_data, '$.chipId') like ? ", "%"+chipId+"%")
- }
- }
- func FillDataStartFillTime(startFillTime string) func(db *gorm.DB) *gorm.DB {
- return func(db *gorm.DB) *gorm.DB {
- if len(startFillTime) == 0 {
- return db
- }
- return db.Where("JSON_EXTRACT(tb_fill_data, '$.fillTime') >=? ", startFillTime)
- }
- }
- func FillDataEndFillTime(endFillTime string) func(db *gorm.DB) *gorm.DB {
- return func(db *gorm.DB) *gorm.DB {
- if len(endFillTime) == 0 {
- return db
- }
- return db.Where("JSON_EXTRACT(tb_fill_data, '$.fillTime') <= ?", endFillTime)
- }
- }
- // GetPage 获取FillData列表
- func (e *FillData) GetPage(c *dto.FillDataGetPageReq, list *[]model.FillData, count *int64, p *actions.DataPermission) error {
- var err error
- var data model.FillData
- err = e.Orm.Model(&data).
- Scopes(
- //FillDataStationId(c.StationId),
- //FillDataUserId(c.UserId),
- cDto.MakeCondition(c.GetNeedSearch()),
- FillDataInnerCode(c.InnerCode),
- FillDataChipId(c.ChipId),
- FillDataStartFillTime(c.StartFillTime),
- FillDataEndFillTime(c.EndFillTime),
- cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
- actions.Permission(data.TableName(), p),
- ).
- Preload("User").Preload("Station").Preload("Company").
- Find(list).Limit(-1).Offset(-1).
- Count(count).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.GetFailedErr
- }
- return nil
- }
- // Insert 创建FillData对象
- func (e *FillData) Insert(c *dto.FillDataInsertReq, fillGun model.FillGun) error {
- var err error
- // 通过高频id查询气瓶编码
- var gasCylinder model.GasCylinder
- err = e.Orm.Where("uid = ?", c.ChipUid).First(&gasCylinder).Error
- if err != nil {
- e.Log.Errorf("获取气瓶信息(chip_id:%s)失败: %s", c.ChipUid, err)
- return errors.New("气瓶编码不存在")
- }
- now := time.Now()
- data := model.FillData{
- Status: 2,
- StationId: fillGun.Dept.CmpCode,
- CompanyId: fillGun.Dept.CmpCode,
- UserId: fillGun.PersonCode,
- GasLog: model.TbGasLog{
- Id: util.NewUuid(),
- GunCode: fillGun.GunCode,
- //PersonFlag:1,
- //ChipFlag:1,
- //OpenStatus:1,
- InnerCode: gasCylinder.InnerCode,
- PersonCode: fillGun.PersonCode,
- ChipId: c.ChipUid,
- CreateTime: now.Format("2006-01-02 15:04:05"),
- },
- TbFillData: model.TbFillData{
- FillId: util.NewUuid(),
- GunCode: fillGun.GunCode,
- StationId: fillGun.Dept.CmpCode,
- CompanyId: fillGun.Dept.CmpCode,
- Area: fillGun.Dept.ProvStore.District,
- City: fillGun.Dept.ProvStore.City,
- //PersonFlag:1,
- //ChipFlag:1,
- //OpenStatus:1,
- InnerCode: gasCylinder.InnerCode,
- UserId: fillGun.PersonCode,
- ChipId: c.ChipUid,
- //ProductMediaId: gasCylinder.FillMedia,
- FillTime: now.Format("2006-01-02 15:04:05"),
- CreateTime: now.Format("2006-01-02 15:04:05"),
- },
- }
- data.SetDeptId(gasCylinder.DeptId)
- tx := e.Orm.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- // TODO 同步省平台 1.1.1.24上报充装记录
- err = tx.Create(&data).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.UpdateFailedErr
- }
- c.Id = data.Id
- return nil
- }
- func (e *FillData) GetStationList(list *[]model.FillDataDistinctStation, count *int64, p *actions.DataPermission) error {
- var err error
- var data model.FillData
- err = e.Orm.Model(&data).
- Scopes(
- actions.Permission(data.TableName(), p),
- ).
- Distinct("station_id").Preload("Station").
- Find(list).
- Count(count).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.GetFailedErr
- }
- return nil
- }
- func (e *FillData) GetUserList(list *[]model.FillDataDistinctUser, count *int64, p *actions.DataPermission) error {
- var err error
- var data model.FillData
- err = e.Orm.Model(&data).
- Scopes(
- actions.Permission(data.TableName(), p),
- ).
- Distinct("user_id").Preload("User").
- Find(list).
- Count(count).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.GetFailedErr
- }
- return nil
- }
|