123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175 |
- package service
- import (
- "errors"
- "fmt"
- "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"
- cModel "gas-cylinder-api/common/model"
- "gogs.baozhida.cn/zoie/OAuth-core/service"
- "gorm.io/gorm"
- "gorm.io/gorm/utils"
- "strings"
- "time"
- )
- type GasCylinderAllot struct {
- service.Service
- }
- // GetPage 获取GasCylinderAllot列表
- func (e *GasCylinderAllot) GetPage(c *dto.GasCylinderAllotGetPageReq, list *[]model.GasCylinderAllot, count *int64, p *actions.DataPermission) error {
- var err error
- var data model.GasCylinderAllot
- if c.My == "allot" {
- err = e.Orm.Model(&data).
- Scopes(
- cDto.MakeCondition(c.GetNeedSearch()),
- cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
- actions.Permission(data.TableName(), p),
- ).
- Where("allot_user_id = ? ", p.UserId).
- Preload("AllotUser").
- Preload("AcceptUser").
- Preload("AllotCompany").
- Preload("AcceptCompany").
- Find(list).Limit(-1).Offset(-1).
- Count(count).Error
- }
- if c.My == "accept" {
- err = e.Orm.Model(&data).
- Scopes(
- cDto.MakeCondition(c.GetNeedSearch()),
- cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
- actions.Permission(data.TableName(), p),
- ).
- Where("accept_user_id = ?", p.UserId).
- Preload("AllotUser").
- Preload("AcceptUser").
- Preload("AllotCompany").
- Preload("AcceptCompany").
- Find(list).Limit(-1).Offset(-1).
- Count(count).Error
- }
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.GetFailedErr
- }
- return nil
- }
- // Get 获取GasCylinderAllot对象
- func (e *GasCylinderAllot) Get(d *dto.GasCylinderAllotGetReq, gasCylinderAllotModel *model.GasCylinderAllot, p *actions.DataPermission) error {
- err := e.Orm.
- Scopes(actions.Permission(gasCylinderAllotModel.TableName(), p)).
- Preload("AllotUser").
- Preload("AcceptUser").
- Preload("AllotCompany").
- Preload("AcceptCompany").
- First(gasCylinderAllotModel, d.GetId()).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return global.GetNotFoundOrNoPermissionErr
- }
- return global.GetFailedErr
- }
- return nil
- }
- // ByOptType 获取GasCylinderAllot对象
- func (e *GasCylinderAllot) GetByOptType(d *dto.GasCylinderAllotGetByOptTypeReq, gasCylinderAllotModel *model.GasCylinderAllot, p *actions.DataPermission) error {
- err := e.Orm.
- Where("opt_type = ? and accept_user_id = ? and status = ? and allot_type = 1", d.OptType, p.UserId, model.GasCylinderAllotStateAllot).
- Preload("AllotUser").
- Preload("AllotCompany").
- First(gasCylinderAllotModel).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return global.GetNotFoundOrNoPermissionErr
- }
- return global.GetFailedErr
- }
- return nil
- }
- // Insert 创建GasCylinderAllot对象
- func (e *GasCylinderAllot) Insert(c *dto.GasCylinderAllotInsertReq) error {
- var err error
- var data model.GasCylinderAllot
- if err = e.Check(c); err != nil {
- return err
- }
- tx := e.Orm.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- err = e.Orm.
- Where("opt_type = ? and accept_user_id = ? and status = ? and allot_type = 1", c.OptType, c.AcceptUserId, model.GasCylinderAllotStateAllot).
- First(&data).Error
- if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
- e.Log.Errorf("db error: %s", err)
- return global.GetFailedErr
- }
- // 扫码调拨未接收不能重复提交
- if data.Id > 0 {
- err = errors.New("调拨中,请勿重复提交!")
- return err
- }
- list := make([]model.GasCylinderAllot, 0)
- err = e.Orm.
- Where("allot_user_id = ? and status = ? and allot_type = 2", c.CreateBy, model.GasCylinderAllotStateAllot).
- Find(&list).Error
- // 扫码调拨未接收不能重复提交
- for _, status := range list {
- isEqual, common, _, _ := global.StringListCompare(status.InnerCodeList, c.InnerCodeList)
- if isEqual || len(common) > 0 {
- err = errors.New(fmt.Sprintf("钢瓶%s调拨中,请勿重复提交!", strings.Join(common, ",")))
- return err
- }
- }
- err = e.VerifyGasCylinderStatus(c.OptType, c.AcceptUserId, c.CreateBy, c.InnerCodeList)
- if err != nil {
- return err
- }
- // 添加调拨信息
- data.Id = 0
- c.Generate(&data)
- // 修改钢瓶状态为调拨中
- var InnerCodeList []string
- for _, v := range c.InnerCodeList {
- InnerCodeList = append(InnerCodeList, v)
- }
- err = e.Orm.Model(&model.GasCylinderStatus{}).
- Where("company_id = ? and inner_code in (?)", data.AllotCompanyId, InnerCodeList).
- Update("is_allot", true).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- err = tx.Create(&data).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- c.Id = data.Id
- return nil
- }
- func (e *GasCylinderAllot) Check(c *dto.GasCylinderAllotInsertReq) error {
- if global.CheckElementExists(c.OptType, []string{"016", "17", "033", "31", "35", "25"}) {
- if c.GasCylinderStatus != model.GasCylinderStatusWeighty {
- return errors.New("该流转步骤仅能接收重瓶!")
- }
- }
- if global.CheckElementExists(c.OptType, []string{"11", "13", "21"}) {
- if c.GasCylinderStatus != model.GasCylinderStatusEmpty {
- return errors.New("该流转步骤仅能接收空瓶!")
- }
- }
- if global.CheckElementExists(c.OptType, []string{"Unqualified"}) {
- if c.GasCylinderStatus != model.GasCylinderStatusUnqualified {
- return errors.New("该流转步骤仅能接收不合格瓶!")
- }
- }
- return nil
- }
- // Update 修改GasCylinderAllot对象
- func (e *GasCylinderAllot) Update(c *dto.GasCylinderAllotUpdateReq, p *actions.DataPermission) error {
- var err error
- tx := e.Orm.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- var gasCylinderAllotModel = model.GasCylinderAllot{}
- // 查询调拨信息是否存在
- err = e.Orm.Scopes(actions.Permission(gasCylinderAllotModel.TableName(), p)).
- First(&gasCylinderAllotModel, c.GetId()).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return global.UpdateNotFoundOrNoPermissionErr
- }
- return global.UpdateFailedErr
- }
- c.Generate(&gasCylinderAllotModel)
- err = tx.Save(&gasCylinderAllotModel).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.UpdateFailedErr
- }
- c.Id = gasCylinderAllotModel.Id
- return nil
- }
- // Remove 删除GasCylinderAllot
- func (e *GasCylinderAllot) Remove(c *dto.GasCylinderAllotDeleteReq, p *actions.DataPermission) error {
- var err error
- tx := e.Orm.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- var gasCylinderAllotModel model.GasCylinderAllot
- // 查询调拨信息是否存在
- err = e.Orm.Scopes(actions.Permission(gasCylinderAllotModel.TableName(), p)).
- First(&gasCylinderAllotModel, c.GetId()).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return global.DeleteNotFoundOrNoPermissionErr
- }
- return global.DeleteFailedErr
- }
- if gasCylinderAllotModel.Status != model.GasCylinderAllotStateCancel {
- err = errors.New(fmt.Sprintf("状态为%s,无法删除", model.GasCylinderAllotStateMap[gasCylinderAllotModel.Status]))
- return err
- }
- db := tx.Delete(&gasCylinderAllotModel)
- if err = db.Error; err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.DeleteFailedErr
- }
- if db.RowsAffected == 0 {
- return global.DeleteNotFoundOrNoPermissionErr
- }
- return nil
- }
- // Cancel 取消GasCylinderAllot
- func (e *GasCylinderAllot) Cancel(c *dto.GasCylinderAllotCancelReq, p *actions.DataPermission) error {
- var err error
- tx := e.Orm.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- var gasCylinderAllotModel = model.GasCylinderAllot{}
- // 查询调拨信息是否存在
- err = e.Orm.Scopes(actions.Permission(gasCylinderAllotModel.TableName(), p)).
- First(&gasCylinderAllotModel, c.GetId()).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return global.UpdateNotFoundOrNoPermissionErr
- }
- return global.UpdateFailedErr
- }
- if gasCylinderAllotModel.Status != model.GasCylinderAllotStateAllot {
- err = errors.New(fmt.Sprintf("状态为%s,无法取消", model.GasCylinderAllotStateMap[gasCylinderAllotModel.Status]))
- return err
- }
- gasCylinderAllotModel.Status = model.GasCylinderAllotStateCancel
- err = tx.Save(&gasCylinderAllotModel).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.UpdateFailedErr
- }
- var InnerCodeList []string
- for _, v := range gasCylinderAllotModel.InnerCodeList {
- InnerCodeList = append(InnerCodeList, v)
- }
- err = e.Orm.Model(&model.GasCylinderStatus{}).
- Where("company_id = ? and inner_code in (?)", gasCylinderAllotModel.AllotCompanyId, InnerCodeList).
- Update("is_allot", false).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- c.Id = gasCylinderAllotModel.Id
- return nil
- }
- // Submit 提交GasCylinderAllot
- func (e *GasCylinderAllot) Submit(c *dto.GasCylinderAllotSubmitReq, p *actions.DataPermission) error {
- var err error
- tx := e.Orm.Begin()
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- tx.Commit()
- }
- }()
- // 调拨状态更新为 已完成
- // 调拨者气瓶状态更新
- // 接收更新气瓶状态 上报气瓶流转信息
- // 调拨更新气瓶状态 上报气瓶流转信息
- var gasCylinderAllotModel = model.GasCylinderAllot{}
- // 查询调拨信息是否存在
- err = e.Orm.First(&gasCylinderAllotModel, c.GetId()).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New("调拨信息不存在!")
- }
- return errors.New("查询调拨信息失败!")
- }
- if gasCylinderAllotModel.Status != model.GasCylinderAllotStateAllot {
- err = errors.New(fmt.Sprintf("状态为%s,无法提交", model.GasCylinderAllotStateMap[gasCylinderAllotModel.Status]))
- return err
- }
- if !global.ContainsAllOptimized(gasCylinderAllotModel.InnerCodeList, c.InnerCodeList) {
- err = errors.New("请提交正确的单位内编码!")
- return err
- }
- err = e.VerifyGasCylinderStatus(gasCylinderAllotModel.OptType, gasCylinderAllotModel.AcceptUserId, gasCylinderAllotModel.AllotUserId, c.InnerCodeList)
- if err != nil {
- return err
- }
- gasCylinderAllotModel.AcceptInnerCodeList = c.InnerCodeList
- gasCylinderAllotModel.Status = model.GasCylinderAllotStateFinish
- err = tx.Save(&gasCylinderAllotModel).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.UpdateFailedErr
- }
- // 修改钢瓶状态为未调拨
- // 修改钢瓶状态为调拨中
- var InnerCodeList []string
- for _, v := range gasCylinderAllotModel.InnerCodeList {
- InnerCodeList = append(InnerCodeList, v)
- }
- err = e.Orm.Model(&model.GasCylinderStatus{}).
- Where("company_id = ? and inner_code in (?)", gasCylinderAllotModel.AllotCompanyId, InnerCodeList).
- Update("is_allot", false).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- c.Id = gasCylinderAllotModel.Id
- acceptUser, err := model.GetUserCode(c.AcceptUserId)
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- allotUser, err := model.GetUserCode(c.AllotUserId)
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- data := make([]model.OperationLog, 0)
- batchNumber := fmt.Sprintf("%03d%s", p.DeptId, time.Now().Format("20060102150405"))
- optTime := time.Now().Format("2006-01-02 15:04:05")
- switch c.OptType {
- case "25":
- // 25送气员领重瓶 37 门店重瓶出库
- for _, innerCode := range c.InnerCodeList {
- // 25送气员领重瓶
- operationLog25 := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- OptUser: acceptUser.ProvUserId,
- ObjectUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStore: acceptUser.Dept.CmpCode,
- Lng: utils.ToString(acceptUser.Dept.ProvStore.Lng),
- Lat: utils.ToString(acceptUser.Dept.ProvStore.Lat),
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- data = append(data, operationLog25)
- // 37 门店重瓶出库
- operationLog37 := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: "37",
- OptUser: allotUser.ProvUserId,
- ObjectUser: allotUser.ProvUserId,
- CompanyId: allotUser.ProvUser.CmpCode,
- CurrentEnterprise: allotUser.ProvUser.CmpCode,
- CurrentStore: allotUser.ProvUser.CmpCode,
- Lng: utils.ToString(allotUser.Dept.ProvStore.Lng),
- Lat: utils.ToString(allotUser.Dept.ProvStore.Lat),
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: allotUser.DeptId,
- },
- }
- data = append(data, operationLog37)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: acceptUser.Id,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusWeighty,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 添加送气员重瓶
- err = tx.Where(model.GasCylinderStatus{InnerCode: innerCode, UserId: acceptUser.Id, CompanyId: acceptUser.Dept.Id}).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusWeighty}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除门店重瓶
- err = tx.Where("inner_code in (?) and user_id = 0 and company_id = ? and status = ?", c.InnerCodeList, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- case "21":
- // 21门店回收空瓶 27送气员回收空瓶
- for _, innerCode := range c.InnerCodeList {
- // 21门店回收空瓶
- operationLog21 := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- ObjectUser: acceptUser.ProvUserId,
- OptUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStore: acceptUser.ProvUser.CmpCode,
- Lng: utils.ToString(acceptUser.Dept.ProvStore.Lng),
- Lat: utils.ToString(acceptUser.Dept.ProvStore.Lat),
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: p.DeptId,
- },
- }
- data = append(data, operationLog21)
- // 添加门店空瓶
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: 0,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusWeighty,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", innerCode, acceptUser.Dept.Id).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusEmpty}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除送气员空瓶
- err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?", c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusEmpty).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- case "11":
- // 10 门店空瓶出库 11 司机确认空瓶装车
- var truckUserCarInfo model.TruckUserCarInfo
- err = tx.Where("prov_user_id = ?", acceptUser.ProvUserId).First(&truckUserCarInfo).Error
- if err != nil {
- tx.Rollback()
- e.Log.Errorf("获取车辆信息失败: %s", err)
- if err == gorm.ErrRecordNotFound {
- return errors.New("该司机未绑定车辆,请先绑定车辆!")
- }
- return errors.New("获取车辆信息失败")
- }
- for _, innerCode := range c.InnerCodeList {
- // 10 门店空瓶出库
- operationLog10 := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: "10",
- ObjectUser: acceptUser.ProvUserId,
- OptUser: allotUser.ProvUserId,
- CompanyId: allotUser.ProvUser.CmpCode,
- CurrentEnterprise: allotUser.ProvUser.CmpCode,
- CurrentStore: allotUser.ProvUser.CmpCode,
- Lng: utils.ToString(allotUser.Dept.ProvStore.Lng),
- Lat: utils.ToString(allotUser.Dept.ProvStore.Lat),
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: allotUser.DeptId,
- },
- }
- data = append(data, operationLog10)
- // 11 司机确认空瓶装车
- operationLog11 := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- ObjectUser: acceptUser.ProvUserId,
- OptUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStore: allotUser.ProvUser.CmpCode,
- CurrentTruck: acceptUser.ProvUserId,
- CurrentMotor: truckUserCarInfo.CarNo,
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- data = append(data, operationLog11)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: acceptUser.Id,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusWeighty,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 添加司机空瓶
- err = tx.Where(model.GasCylinderStatus{InnerCode: innerCode, UserId: acceptUser.Id, CompanyId: acceptUser.Dept.Id}).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusEmpty}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除门店空瓶
- err = tx.Where("inner_code in (?) and user_id = 0 and company_id = ? and status = ?", c.InnerCodeList, allotUser.Dept.Id, model.GasCylinderStatusEmpty).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- case "13":
- // 12 司机运输空瓶到达气站 13 气站确认空瓶到达气站
- var truckUserCarInfo model.TruckUserCarInfo
- err = tx.Where("prov_user_id = ?", allotUser.ProvUserId).First(&truckUserCarInfo).Error
- if err != nil {
- tx.Rollback()
- e.Log.Errorf("获取车辆信息失败: %s", err)
- if err == gorm.ErrRecordNotFound {
- return errors.New("该司机未绑定车辆,请先绑定车辆!")
- }
- return errors.New("获取车辆信息失败")
- }
- for _, innerCode := range c.InnerCodeList {
- // 12 司机运输空瓶到达气站
- operationLog12 := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: "12",
- ObjectUser: allotUser.ProvUserId,
- OptUser: allotUser.ProvUserId,
- CompanyId: allotUser.ProvUser.CmpCode,
- CurrentEnterprise: allotUser.ProvUser.CmpCode,
- CurrentStation: acceptUser.ProvUser.CmpCode,
- CurrentTruck: allotUser.ProvUserId,
- CurrentMotor: truckUserCarInfo.CarNo,
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: p.DeptId,
- },
- }
- data = append(data, operationLog12)
- // 13 气站确认空瓶到达气站
- operationLog13 := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- ObjectUser: acceptUser.ProvUserId,
- OptUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStation: acceptUser.ProvUser.CmpCode,
- Lng: utils.ToString(acceptUser.Dept.ProvStore.Lng),
- Lat: utils.ToString(acceptUser.Dept.ProvStore.Lat),
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: p.DeptId,
- },
- }
- data = append(data, operationLog13)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: 0,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusEmpty,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 添加气站空瓶
- err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", innerCode, acceptUser.Dept.Id).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusEmpty}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除司机空瓶
- err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?", c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusEmpty).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- case "17":
- // 15 气站重瓶出库 17 司机确认重瓶从气站出库
- var truckUserCarInfo model.TruckUserCarInfo
- err = tx.Where("prov_user_id = ?", acceptUser.ProvUserId).First(&truckUserCarInfo).Error
- if err != nil {
- tx.Rollback()
- e.Log.Errorf("获取车辆信息失败: %s", err)
- if err == gorm.ErrRecordNotFound {
- return errors.New("该司机未绑定车辆,请先绑定车辆!")
- }
- return errors.New("获取车辆信息失败")
- }
- for _, innerCode := range c.InnerCodeList {
- // 15 气站重瓶出库
- operationLog15 := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: "15",
- OptUser: allotUser.ProvUserId,
- ObjectUser: allotUser.ProvUserId,
- CompanyId: allotUser.ProvUser.CmpCode,
- CurrentEnterprise: allotUser.ProvUser.CmpCode,
- CurrentStation: allotUser.ProvUser.CmpCode,
- Lng: utils.ToString(allotUser.Dept.ProvStore.Lng),
- Lat: utils.ToString(allotUser.Dept.ProvStore.Lat),
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: allotUser.DeptId,
- },
- }
- data = append(data, operationLog15)
- // 17 司机确认重瓶从气站出库
- operationLog17 := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- OptUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStation: allotUser.ProvUser.CmpCode,
- CurrentTruck: acceptUser.ProvUserId,
- CurrentMotor: truckUserCarInfo.CarNo,
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- data = append(data, operationLog17)
- // 司机添加重瓶
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: acceptUser.Id,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusWeighty,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- err = tx.Where(model.GasCylinderStatus{InnerCode: innerCode, UserId: acceptUser.Id, CompanyId: acceptUser.Dept.Id}).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusWeighty}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除气站重瓶
- err = tx.Where("inner_code in (?) and user_id = 0 and company_id = ? and status = ?", c.InnerCodeList, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- case "31":
- // 19 司机交付门店 31 门店确认重瓶卸货入库
- var truckUserCarInfo model.TruckUserCarInfo
- err = tx.Where("prov_user_id = ?", allotUser.ProvUserId).First(&truckUserCarInfo).Error
- if err != nil {
- tx.Rollback()
- e.Log.Errorf("获取车辆信息失败: %s", err)
- if err == gorm.ErrRecordNotFound {
- return errors.New("该司机未绑定车辆,请先绑定车辆!")
- }
- return errors.New("获取车辆信息失败")
- }
- for _, innerCode := range c.InnerCodeList {
- // 19 司机交付门店
- operationLog19 := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: "19",
- OptUser: allotUser.ProvUserId,
- ObjectUser: allotUser.ProvUserId,
- CompanyId: allotUser.ProvUser.CmpCode,
- CurrentEnterprise: allotUser.ProvUser.CmpCode,
- CurrentStore: acceptUser.ProvUser.CmpCode,
- CurrentTruck: allotUser.ProvUserId,
- CurrentMotor: truckUserCarInfo.CarNo,
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: allotUser.DeptId,
- },
- }
- data = append(data, operationLog19)
- // 31 门店确认重瓶卸货入库
- operationLog31 := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- OptUser: acceptUser.ProvUserId,
- ObjectUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStore: acceptUser.ProvUser.CmpCode,
- CurrentTruck: acceptUser.ProvUserId,
- CurrentMotor: truckUserCarInfo.CarNo,
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- data = append(data, operationLog31)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: 0,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusWeighty,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 门店添加重瓶
- err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", innerCode, acceptUser.Dept.Id).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusWeighty}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除司机重瓶
- err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?",
- c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- case "35":
- // 35 门店确认未配送重瓶返库
- for _, innerCode := range c.InnerCodeList {
- operationLog35 := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- OptUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStore: acceptUser.ProvUser.CmpCode,
- Lng: utils.ToString(acceptUser.Dept.ProvStore.Lng),
- Lat: utils.ToString(acceptUser.Dept.ProvStore.Lat),
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: p.DeptId,
- },
- }
- data = append(data, operationLog35)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: 0,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusWeighty,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 门店添加重瓶
- err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", innerCode, acceptUser.Dept.Id).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusWeighty}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除送气员重瓶
- err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?",
- c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- case "033":
- // 33 门店将重瓶退回司机
- var truckUserCarInfo model.TruckUserCarInfo
- // 2、上报气瓶流转信息
- err = tx.Where("prov_user_id = ?", acceptUser.ProvUserId).First(&truckUserCarInfo).Error
- if err != nil {
- tx.Rollback()
- e.Log.Errorf("获取车辆信息失败: %s", err)
- if err == gorm.ErrRecordNotFound {
- return errors.New("该司机未绑定车辆,请先绑定车辆!")
- }
- return errors.New("获取车辆信息失败")
- }
- for _, innerCode := range c.InnerCodeList {
- operationLog33 := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: "33",
- OptUser: allotUser.ProvUserId,
- CompanyId: allotUser.ProvUser.CmpCode,
- CurrentEnterprise: allotUser.ProvUser.CmpCode,
- CurrentStore: allotUser.ProvUser.CmpCode,
- Lng: utils.ToString(allotUser.Dept.ProvStore.Lng),
- Lat: utils.ToString(allotUser.Dept.ProvStore.Lat),
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: allotUser.DeptId,
- },
- }
- data = append(data, operationLog33)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: acceptUser.Id,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusWeighty,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 司机添加重瓶
- err = tx.Where(model.GasCylinderStatus{InnerCode: innerCode, UserId: acceptUser.Id, CompanyId: acceptUser.Dept.Id}).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusWeighty}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除门店重瓶
- err = tx.Where("inner_code in (?) and user_id = 0 and company_id = ? and status = ?",
- c.InnerCodeList, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- case "016":
- // 16 司机将订单退回气站
- var truckUserCarInfo model.TruckUserCarInfo
- err = tx.Where("prov_user_id = ?", allotUser.ProvUserId).First(&truckUserCarInfo).Error
- if err != nil {
- tx.Rollback()
- e.Log.Errorf("获取车辆信息失败: %s", err)
- if err == gorm.ErrRecordNotFound {
- return errors.New("该司机未绑定车辆,请先绑定车辆!")
- }
- return errors.New("获取车辆信息失败")
- }
- for _, innerCode := range c.InnerCodeList {
- // 2、上报气瓶流转信息
- operationLog16 := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: "16",
- ObjectUser: allotUser.ProvUserId,
- OptUser: allotUser.ProvUserId,
- CompanyId: allotUser.ProvUser.CmpCode,
- CurrentEnterprise: allotUser.ProvUser.CmpCode,
- CurrentStation: acceptUser.Dept.CmpCode,
- CurrentTruck: allotUser.ProvUserId,
- CurrentMotor: truckUserCarInfo.CarNo,
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: p.DeptId,
- },
- }
- data = append(data, operationLog16)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: 0,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusWeighty,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 气站添加重瓶
- err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", innerCode, acceptUser.Dept.Id).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusWeighty}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除司机重瓶
- err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?",
- c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- case "md" + model.GasCylinderStatusScrap, "sj" + model.GasCylinderStatusScrap, "qz" + model.GasCylinderStatusScrap:
- // 不合格 送气员->门店->司机->气站
- // 送气员->门店
- if allotUser.ProvUser.UserType == 3 && allotUser.ProvUser.Isorders == 0 {
- // 送气员到门店 送气员不合格- 门店+
- if acceptUser.ProvUser.UserType == 3 && acceptUser.ProvUser.Isorders == 1 {
- for _, innerCode := range c.InnerCodeList {
- // mdscrap 门店回收报废瓶
- operationLogMdscrap := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- ObjectUser: acceptUser.ProvUserId,
- OptUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStore: acceptUser.ProvUser.CmpCode,
- Lng: utils.ToString(acceptUser.Dept.ProvStore.Lng),
- Lat: utils.ToString(acceptUser.Dept.ProvStore.Lat),
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: p.DeptId,
- },
- }
- data = append(data, operationLogMdscrap)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: 0,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusScrap,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 门店添加报废瓶瓶
- err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", innerCode, acceptUser.Dept.Id).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusScrap}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除送气员报废瓶瓶
- err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?",
- c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusScrap).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- } else {
- err = errors.New("请出示正确的门店回收报废瓶瓶调拨码")
- return err
- }
- } else if allotUser.ProvUser.UserType == 3 && allotUser.ProvUser.Isorders == 1 {
- // 门店到司机 门店- 司机+
- var truckUserCarInfo model.TruckUserCarInfo
- err = tx.Where("prov_user_id = ?", acceptUser.ProvUserId).First(&truckUserCarInfo).Error
- if err != nil {
- tx.Rollback()
- e.Log.Errorf("获取车辆信息失败: %s", err)
- if err == gorm.ErrRecordNotFound {
- return errors.New("该司机未绑定车辆,请先绑定车辆!")
- }
- return errors.New("获取车辆信息失败")
- }
- if acceptUser.ProvUser.UserType == 4 {
- for _, innerCode := range c.InnerCodeList {
- operationLogSjscrap := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- ObjectUser: acceptUser.ProvUserId,
- OptUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStore: allotUser.ProvUser.CmpCode,
- CurrentTruck: acceptUser.ProvUserId,
- CurrentMotor: truckUserCarInfo.CarNo,
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- data = append(data, operationLogSjscrap)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: acceptUser.Id,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusScrap,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 司机添加报废瓶瓶
- err = tx.Where(model.GasCylinderStatus{InnerCode: innerCode, UserId: acceptUser.Id, CompanyId: acceptUser.Dept.Id}).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusScrap}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除门店报废瓶瓶
- err = tx.Where("inner_code in (?) and user_id = 0 and company_id = ? and status = ?",
- c.InnerCodeList, allotUser.Dept.Id, model.GasCylinderStatusScrap).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- } else {
- err = errors.New("请司机出示正确的回收报废瓶瓶调拨码")
- return err
- }
- } else if allotUser.ProvUser.UserType == 4 {
- // 司机给门店
- if acceptUser.ProvUser.UserType == 3 && acceptUser.ProvUser.Isorders == 1 {
- var truckUserCarInfo model.TruckUserCarInfo
- err = tx.Where("prov_user_id = ?", allotUser.ProvUserId).First(&truckUserCarInfo).Error
- if err != nil {
- tx.Rollback()
- e.Log.Errorf("获取车辆信息失败: %s", err)
- if err == gorm.ErrRecordNotFound {
- return errors.New("该司机未绑定车辆,请先绑定车辆!")
- }
- return errors.New("获取车辆信息失败")
- }
- for _, innerCode := range c.InnerCodeList {
- // 司机交付门店
- operationLogMdscrap := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- OptUser: acceptUser.ProvUserId,
- ObjectUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStore: acceptUser.ProvUser.CmpCode,
- CurrentTruck: acceptUser.ProvUserId,
- CurrentMotor: truckUserCarInfo.CarNo,
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- data = append(data, operationLogMdscrap)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: 0,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusScrap,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 门店添加报废瓶瓶
- err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", innerCode, acceptUser.Dept.Id).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusScrap}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除司机报废瓶瓶
- err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?",
- c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusScrap).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- } else if acceptUser.ProvUser.UserType == 5 && acceptUser.ProvUser.Isorders == 0 {
- // 司机到气站 司机- 气站+
- var truckUserCarInfo model.TruckUserCarInfo
- err = tx.Where("prov_user_id = ?", allotUser.ProvUserId).First(&truckUserCarInfo).Error
- if err != nil {
- tx.Rollback()
- e.Log.Errorf("获取车辆信息失败: %s", err)
- if err == gorm.ErrRecordNotFound {
- return errors.New("该司机未绑定车辆,请先绑定车辆!")
- }
- return errors.New("获取车辆信息失败")
- }
- for _, innerCode := range c.InnerCodeList {
- operationLogQzscrap := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- ObjectUser: acceptUser.ProvUserId,
- OptUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStation: acceptUser.ProvUser.CmpCode,
- Lng: utils.ToString(acceptUser.Dept.ProvStore.Lng),
- Lat: utils.ToString(acceptUser.Dept.ProvStore.Lat),
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: p.DeptId,
- },
- }
- data = append(data, operationLogQzscrap)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: 0,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusScrap,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 气站添加报废瓶瓶
- err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", innerCode, acceptUser.Dept.Id).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusScrap}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除司机报废瓶瓶
- err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?",
- c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusScrap).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- } else {
- err = errors.New("请门店/气站出示正确的回收报废瓶瓶调拨码")
- return err
- }
- } else if allotUser.ProvUser.UserType == 5 {
- // 气站到司机
- if acceptUser.ProvUser.UserType == 4 && acceptUser.ProvUser.Isorders == 0 {
- var truckUserCarInfo model.TruckUserCarInfo
- err = tx.Where("prov_user_id = ?", acceptUser.ProvUserId).First(&truckUserCarInfo).Error
- if err != nil {
- tx.Rollback()
- e.Log.Errorf("获取车辆信息失败: %s", err)
- if err == gorm.ErrRecordNotFound {
- return errors.New("该司机未绑定车辆,请先绑定车辆!")
- }
- return errors.New("获取车辆信息失败")
- }
- for _, innerCode := range c.InnerCodeList {
- operationLogSjscrap := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- OptUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStation: allotUser.ProvUser.CmpCode,
- CurrentTruck: acceptUser.ProvUserId,
- CurrentMotor: truckUserCarInfo.CarNo,
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- data = append(data, operationLogSjscrap)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: acceptUser.Id,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusScrap,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 司机添加报废瓶瓶
- err = tx.Where(model.GasCylinderStatus{InnerCode: innerCode, UserId: acceptUser.Id, CompanyId: acceptUser.Dept.Id}).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusScrap}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除气站报废瓶瓶
- err = tx.Where("inner_code in (?) and user_id = 0 and company_id = ? and status = ?",
- c.InnerCodeList, allotUser.Dept.Id, model.GasCylinderStatusScrap).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- } else {
- err = errors.New("请司机出示正确的回收报废瓶瓶调拨码")
- return err
- }
- }
- case "md" + model.GasCylinderStatusExtended, "sj" + model.GasCylinderStatusExtended, "qz" + model.GasCylinderStatusExtended:
- // 不合格 送气员->门店->司机->气站
- // 送气员->门店
- if allotUser.ProvUser.UserType == 3 && allotUser.ProvUser.Isorders == 0 {
- // 送气员到门店 送气员不合格- 门店+
- if acceptUser.ProvUser.UserType == 3 && acceptUser.ProvUser.Isorders == 1 {
- for _, innerCode := range c.InnerCodeList {
- // mdscrap 门店回收报废瓶
- operationLogMdextended := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- ObjectUser: acceptUser.ProvUserId,
- OptUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStore: acceptUser.ProvUser.CmpCode,
- Lng: utils.ToString(acceptUser.Dept.ProvStore.Lng),
- Lat: utils.ToString(acceptUser.Dept.ProvStore.Lat),
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: p.DeptId,
- },
- }
- data = append(data, operationLogMdextended)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: 0,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusExtended,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 门店添加超期瓶
- err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", innerCode, acceptUser.Dept.Id).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusExtended}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除送气员超期瓶
- err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?",
- c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusExtended).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- } else {
- err = errors.New("请出示正确的门店回收超期瓶调拨码")
- return err
- }
- } else if allotUser.ProvUser.UserType == 3 && allotUser.ProvUser.Isorders == 1 {
- // 门店到司机 门店- 司机+
- if acceptUser.ProvUser.UserType == 4 {
- var truckUserCarInfo model.TruckUserCarInfo
- err = tx.Where("prov_user_id = ?", acceptUser.ProvUserId).First(&truckUserCarInfo).Error
- if err != nil {
- tx.Rollback()
- e.Log.Errorf("获取车辆信息失败: %s", err)
- if err == gorm.ErrRecordNotFound {
- return errors.New("该司机未绑定车辆,请先绑定车辆!")
- }
- return errors.New("获取车辆信息失败")
- }
- for _, innerCode := range c.InnerCodeList {
- operationLogSjextended := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- ObjectUser: acceptUser.ProvUserId,
- OptUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStore: allotUser.ProvUser.CmpCode,
- CurrentTruck: acceptUser.ProvUserId,
- CurrentMotor: truckUserCarInfo.CarNo,
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- data = append(data, operationLogSjextended)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: acceptUser.Id,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusExtended,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 司机添加超期瓶
- err = tx.Where(model.GasCylinderStatus{InnerCode: innerCode, UserId: acceptUser.Id, CompanyId: acceptUser.Dept.Id}).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusExtended}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除门店超期瓶
- err = tx.Where("inner_code in (?) and user_id = 0 and company_id = ? and status = ?",
- c.InnerCodeList, allotUser.Dept.Id, model.GasCylinderStatusExtended).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- } else {
- err = errors.New("请司机出示正确的回收超期瓶调拨码")
- return err
- }
- } else if allotUser.ProvUser.UserType == 4 {
- // 司机给门店
- if acceptUser.ProvUser.UserType == 3 && acceptUser.ProvUser.Isorders == 1 {
- var truckUserCarInfo model.TruckUserCarInfo
- err = tx.Where("prov_user_id = ?", allotUser.ProvUserId).First(&truckUserCarInfo).Error
- if err != nil {
- tx.Rollback()
- e.Log.Errorf("获取车辆信息失败: %s", err)
- if err == gorm.ErrRecordNotFound {
- return errors.New("该司机未绑定车辆,请先绑定车辆!")
- }
- return errors.New("获取车辆信息失败")
- }
- for _, innerCode := range c.InnerCodeList {
- // 司机交付门店
- operationLogMdextended := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- OptUser: acceptUser.ProvUserId,
- ObjectUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStore: acceptUser.ProvUser.CmpCode,
- CurrentTruck: acceptUser.ProvUserId,
- CurrentMotor: truckUserCarInfo.CarNo,
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- data = append(data, operationLogMdextended)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: 0,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusExtended,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 门店添加超期瓶
- err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", innerCode, acceptUser.Dept.Id).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusExtended}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除司机超期瓶
- err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?",
- c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusExtended).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- } else if acceptUser.ProvUser.UserType == 5 && acceptUser.ProvUser.Isorders == 0 {
- // 司机到气站 司机- 气站+
- var truckUserCarInfo model.TruckUserCarInfo
- err = tx.Where("prov_user_id = ?", allotUser.ProvUserId).First(&truckUserCarInfo).Error
- if err != nil {
- tx.Rollback()
- e.Log.Errorf("获取车辆信息失败: %s", err)
- if err == gorm.ErrRecordNotFound {
- return errors.New("该司机未绑定车辆,请先绑定车辆!")
- }
- return errors.New("获取车辆信息失败")
- }
- for _, innerCode := range c.InnerCodeList {
- operationLogQzextended := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- ObjectUser: acceptUser.ProvUserId,
- OptUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStation: acceptUser.ProvUser.CmpCode,
- Lng: utils.ToString(acceptUser.Dept.ProvStore.Lng),
- Lat: utils.ToString(acceptUser.Dept.ProvStore.Lat),
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: p.DeptId,
- },
- }
- data = append(data, operationLogQzextended)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: 0,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusExtended,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 气站添加超期瓶
- err = tx.Where("inner_code = ? and user_id = 0 and company_id = ? ", innerCode, acceptUser.Dept.Id).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusExtended}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除司机超期瓶
- err = tx.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?",
- c.InnerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusExtended).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- } else {
- err = errors.New("请门店/气站出示正确的回收超期瓶调拨码")
- return err
- }
- } else if allotUser.ProvUser.UserType == 5 {
- // 气站到司机
- if acceptUser.ProvUser.UserType == 4 && acceptUser.ProvUser.Isorders == 0 {
- var truckUserCarInfo model.TruckUserCarInfo
- err = tx.Where("prov_user_id = ?", acceptUser.ProvUserId).First(&truckUserCarInfo).Error
- if err != nil {
- tx.Rollback()
- e.Log.Errorf("获取车辆信息失败: %s", err)
- if err == gorm.ErrRecordNotFound {
- return errors.New("该司机未绑定车辆,请先绑定车辆!")
- }
- return errors.New("获取车辆信息失败")
- }
- for _, innerCode := range c.InnerCodeList {
- operationLogSjextended := model.OperationLog{
- BatchNumber: batchNumber,
- ProvOperationLog: model.ProvOperationLog{
- InnerCode: innerCode,
- OptType: c.OptType,
- OptUser: acceptUser.ProvUserId,
- CompanyId: acceptUser.ProvUser.CmpCode,
- CurrentEnterprise: acceptUser.ProvUser.CmpCode,
- CurrentStation: allotUser.ProvUser.CmpCode,
- CurrentTruck: acceptUser.ProvUserId,
- CurrentMotor: truckUserCarInfo.CarNo,
- OptTime: optTime,
- },
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- data = append(data, operationLogSjextended)
- gasCylinderStatus := &model.GasCylinderStatus{
- InnerCode: innerCode,
- UserId: acceptUser.Id,
- CompanyId: acceptUser.Dept.Id,
- Status: model.GasCylinderStatusExtended,
- ControlBy: cModel.ControlBy{
- CreateBy: p.UserId,
- },
- DeptBy: cModel.DeptBy{
- DeptId: acceptUser.DeptId,
- },
- }
- // 司机添加超期瓶
- err = tx.Where(model.GasCylinderStatus{InnerCode: innerCode, UserId: acceptUser.Id, CompanyId: acceptUser.Dept.Id}).
- Assign(model.GasCylinderStatus{Status: model.GasCylinderStatusExtended}).FirstOrCreate(&gasCylinderStatus).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- }
- // 删除气站超期瓶
- err = tx.Where("inner_code in (?) and user_id = 0 and company_id = ? and status = ?",
- c.InnerCodeList, allotUser.Dept.Id, model.GasCylinderStatusExtended).
- Delete(&model.GasCylinderStatus{}).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return global.CreateFailedErr
- }
- } else {
- err = errors.New("请司机出示正确的回收超期瓶调拨码")
- return err
- }
- }
- }
- provList := make([]model.ProvOperationLog, 0)
- for _, v := range data {
- provList = append(provList, v.GenProvOperationLog())
- }
- // TODO 同步省平台 1.1.1.22 批量新增操作记录
- if len(data) > 0 {
- err = tx.Create(&data).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return errors.New("添加流转步骤失败")
- }
- }
- // 更新钢瓶最新流转步骤时间
- err = tx.Model(&model.GasCylinder{}).Where("inner_code in (?) ", c.InnerCodeList).
- Updates(map[string]interface{}{
- "last_operation_time": time.Now(),
- }).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return errors.New("更新钢瓶最新流转步骤时间失败")
- }
- return nil
- }
- func (e *GasCylinderAllot) VerifyGasCylinderStatus(optType string, acceptUserId, allotUserId int, innerCodeList []string) error {
- acceptUser, err := model.GetUserCode(acceptUserId)
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return errors.New("查询接收人信息失败!")
- }
- allotUser, err := model.GetUserCode(allotUserId)
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- return errors.New("查询调拨人信息失败!")
- }
- switch optType {
- case "25":
- // 25送气员领重瓶 37 门店重瓶出库
- for _, innerCode := range innerCodeList {
- // 查询门店重瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = 0 and company_id = ? and status = ?", innerCode, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
- Preload("Company").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("门店【%s】重瓶%s不存在", allotUser.Dept.Name, innerCode))
- }
- return errors.New(fmt.Sprintf("查询门店重瓶失败"))
- }
- }
- case "21":
- // 21门店回收空瓶 27送气员回收空瓶
- for _, innerCode := range innerCodeList {
- // 查询送气员空瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = ? and company_id = ? and status = ?", innerCode, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusEmpty).
- Preload("User").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("送气员【%s】空瓶%s不存在", allotUser.NickName, innerCode))
- }
- return errors.New(fmt.Sprintf("查询送气员空瓶失败"))
- }
- }
- case "11":
- // 10 门店空瓶出库 11 司机确认空瓶装车
- for _, innerCode := range innerCodeList {
- // 查询门店空瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = 0 and company_id = ? and status = ?", innerCode, allotUser.Dept.Id, model.GasCylinderStatusEmpty).
- Preload("Company").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("门店【%s】空瓶%s不存在", allotUser.Dept.Name, innerCode))
- }
- return errors.New(fmt.Sprintf("查询门店空瓶失败"))
- }
- }
- case "13":
- // 12 司机运输空瓶到达气站 13 气站确认空瓶到达气站
- for _, innerCode := range innerCodeList {
- // 查询司机空瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = ? and company_id = ? and status = ?", innerCode, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusEmpty).
- Preload("User").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("司机【%s】空瓶%s不存在", allotUser.NickName, innerCode))
- }
- return errors.New(fmt.Sprintf("查询司机空瓶失败"))
- }
- }
- case "17":
- // 15 气站重瓶出库 17 司机确认重瓶从气站出库
- for _, innerCode := range innerCodeList {
- // 查询气站重瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = 0 and company_id = ? and status = ?", innerCode, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
- Preload("Company").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("气站【%s】重瓶%s不存在", allotUser.Dept.Name, innerCode))
- }
- return errors.New(fmt.Sprintf("查询气站重瓶失败"))
- }
- }
- case "31":
- // 19 司机交付门店 31 门店确认重瓶卸货入库
- for _, innerCode := range innerCodeList {
- // 查询司机重瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code in = ? and user_id = ? and company_id = ? and status = ?",
- innerCode, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
- Preload("User").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("司机【%s】重瓶%s不存在", allotUser.NickName, innerCode))
- }
- return errors.New(fmt.Sprintf("查询司机重瓶失败"))
- }
- }
- case "35":
- // 35 门店确认未配送重瓶返库
- for _, innerCode := range innerCodeList {
- // 查询送气员重瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code in = ? and user_id = ? and company_id = ? and status = ?",
- innerCode, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
- Preload("User").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("送气员【%s】重瓶%s不存在", allotUser.NickName, innerCode))
- }
- return errors.New(fmt.Sprintf("查询送气员重瓶失败"))
- }
- }
- case "033":
- // 33 门店将重瓶退回司机
- for _, innerCode := range innerCodeList {
- // 查询门店重瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = 0 and company_id = ? and status = ?",
- innerCode, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
- Preload("Company").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("门店【%s】重瓶%s不存在", allotUser.Dept.Name, innerCode))
- }
- return errors.New(fmt.Sprintf("查询门店重瓶失败"))
- }
- }
- case "016":
- // 16 司机将订单退回气站
- for _, innerCode := range innerCodeList {
- // 查询司机重瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = ? and company_id = ? and status = ?",
- innerCode, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusWeighty).
- Preload("User").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("司机【%s】重瓶%s不存在", allotUser.NickName, innerCode))
- }
- return errors.New(fmt.Sprintf("查询司机重瓶失败"))
- }
- }
- case "md" + model.GasCylinderStatusScrap, "sj" + model.GasCylinderStatusScrap, "qz" + model.GasCylinderStatusScrap:
- // 不合格 送气员->门店->司机->气站
- // 送气员->门店
- if allotUser.ProvUser.UserType == 3 && allotUser.ProvUser.Isorders == 0 {
- // 送气员到门店 送气员不合格- 门店+
- if acceptUser.ProvUser.UserType == 3 && acceptUser.ProvUser.Isorders == 1 {
- for _, innerCode := range innerCodeList {
- // 查询送气员报废瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code in (?) and user_id = ? and company_id = ? and status = ?",
- innerCodeList, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusScrap).
- Preload("User").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("送气员【%s】报废瓶%s不存在", allotUser.NickName, innerCode))
- }
- return errors.New(fmt.Sprintf("查询送气员报废瓶失败"))
- }
- }
- }
- } else if allotUser.ProvUser.UserType == 3 && allotUser.ProvUser.Isorders == 1 {
- // 门店到司机 门店- 司机+
- if acceptUser.ProvUser.UserType == 4 {
- for _, innerCode := range innerCodeList {
- // 查询门店报废瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = 0 and company_id = ? and status = ?",
- innerCode, allotUser.Dept.Id, model.GasCylinderStatusScrap).
- Preload("Company").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("门店【%s】报废瓶%s不存在", allotUser.Dept.Name, innerCode))
- }
- return errors.New(fmt.Sprintf("查询门店报废瓶失败"))
- }
- }
- }
- } else if allotUser.ProvUser.UserType == 4 {
- // 司机给门店
- if acceptUser.ProvUser.UserType == 3 && acceptUser.ProvUser.Isorders == 1 {
- for _, innerCode := range innerCodeList {
- // 查询司机报废瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = ? and company_id = ? and status = ?",
- innerCode, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusScrap).
- Preload("User").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("司机【%s】报废瓶%s不存在", allotUser.NickName, innerCode))
- }
- return errors.New(fmt.Sprintf("查询司机报废瓶失败"))
- }
- }
- } else if acceptUser.ProvUser.UserType == 5 && acceptUser.ProvUser.Isorders == 0 {
- // 司机到气站 司机- 气站+
- for _, innerCode := range innerCodeList {
- // 查询司机报废瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = ? and company_id = ? and status = ?",
- innerCode, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusScrap).
- Preload("User").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("司机【%s】报废瓶%s不存在", allotUser.NickName, innerCode))
- }
- return errors.New(fmt.Sprintf("查询司机报废瓶失败"))
- }
- }
- }
- } else if allotUser.ProvUser.UserType == 5 {
- // 气站到司机
- if acceptUser.ProvUser.UserType == 4 && acceptUser.ProvUser.Isorders == 0 {
- for _, innerCode := range innerCodeList {
- // 查询气站报废瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = 0 and company_id = ? and status = ?",
- innerCode, allotUser.Dept.Id, model.GasCylinderStatusScrap).
- Preload("Company").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("气站【%s】报废瓶%s不存在", allotUser.Dept.Name, innerCode))
- }
- return errors.New(fmt.Sprintf("查询气站报废瓶失败"))
- }
- }
- }
- }
- case "md" + model.GasCylinderStatusExtended, "sj" + model.GasCylinderStatusExtended, "qz" + model.GasCylinderStatusExtended:
- // 不合格 送气员->门店->司机->气站
- // 送气员->门店
- if allotUser.ProvUser.UserType == 3 && allotUser.ProvUser.Isorders == 0 {
- // 送气员到门店 送气员不合格- 门店+
- if acceptUser.ProvUser.UserType == 3 && acceptUser.ProvUser.Isorders == 1 {
- for _, innerCode := range innerCodeList {
- // 查询送气员超期瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = ? and company_id = ? and status = ?",
- innerCode, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusExtended).
- Preload("User").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("送气员【%s】超期瓶%s不存在", allotUser.NickName, innerCode))
- }
- return errors.New(fmt.Sprintf("查询送气员超期瓶失败"))
- }
- }
- }
- } else if allotUser.ProvUser.UserType == 3 && allotUser.ProvUser.Isorders == 1 {
- // 门店到司机 门店- 司机+
- if acceptUser.ProvUser.UserType == 4 {
- for _, innerCode := range innerCodeList {
- // 查询门店超期瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = 0 and company_id = ? and status = ?",
- innerCode, allotUser.Dept.Id, model.GasCylinderStatusExtended).
- Preload("Company").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("门店【%s】超期瓶%s不存在", allotUser.Dept.Name, innerCode))
- }
- return errors.New(fmt.Sprintf("查询门店超期瓶失败"))
- }
- }
- }
- } else if allotUser.ProvUser.UserType == 4 {
- // 司机给门店
- if acceptUser.ProvUser.UserType == 3 && acceptUser.ProvUser.Isorders == 1 {
- for _, innerCode := range innerCodeList {
- // 查询司机超期瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = ? and company_id = ? and status = ?",
- innerCode, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusExtended).
- Preload("User").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("司机【%s】超期瓶%s不存在", allotUser.NickName, innerCode))
- }
- return errors.New(fmt.Sprintf("查询司机超期瓶失败"))
- }
- }
- } else if acceptUser.ProvUser.UserType == 5 && acceptUser.ProvUser.Isorders == 0 {
- // 司机到气站 司机- 气站+
- for _, innerCode := range innerCodeList {
- // 查询司机超期瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = ? and company_id = ? and status = ?",
- innerCode, allotUser.Id, allotUser.Dept.Id, model.GasCylinderStatusExtended).
- Preload("User").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("司机【%s】超期瓶%s不存在", allotUser.NickName, innerCode))
- }
- return errors.New(fmt.Sprintf("查询司机超期瓶失败"))
- }
- }
- }
- } else if allotUser.ProvUser.UserType == 5 {
- // 气站到司机
- if acceptUser.ProvUser.UserType == 4 && acceptUser.ProvUser.Isorders == 0 {
- for _, innerCode := range innerCodeList {
- // 查询气站超期瓶
- var gsc model.GasCylinderStatus
- err = e.Orm.Where("inner_code = ? and user_id = 0 and company_id = ? and status = ?",
- innerCode, allotUser.Dept.Id, model.GasCylinderStatusExtended).
- Preload("Company").
- First(&gsc).Error
- if err != nil {
- e.Log.Errorf("db error: %s", err)
- if errors.Is(err, gorm.ErrRecordNotFound) {
- return errors.New(fmt.Sprintf("气站【%s】超期瓶%s不存在", allotUser.Dept.Name, innerCode))
- }
- return errors.New(fmt.Sprintf("查询气站超期瓶失败"))
- }
- }
- }
- }
- }
- return nil
- }
|