diff --git a/models/base/Const.go b/models/base/Const.go index f58a080..5f32f49 100644 --- a/models/base/Const.go +++ b/models/base/Const.go @@ -105,4 +105,9 @@ const ( ODER_TYPE_SEQ = "SEQ" ODER_TYPE_INTERVAL = "INT" ODER_TYPE_REODER = "REO" + + ART_TYPE_FINISHED = "FINISHED" + ART_TYPE_SEMI_FINISHED = "SEMI_FINISHED" + ART_TYPE_MATERIALS = "MATERIALS" + ART_TYPE_VIRTUAL = "VIRTUAL" ) diff --git a/models/me/BomLst.model.go b/models/me/BomLst.model.go index f68cac1..66fe12a 100644 --- a/models/me/BomLst.model.go +++ b/models/me/BomLst.model.go @@ -145,4 +145,5 @@ func DiguiMeBomlst(me_bomlst *[]BomLst, me BomLst) BomLst { } me.ItemLi = min return me -} \ No newline at end of file +} + diff --git a/services/me/implments/BomHead.service.impl.go b/services/me/implments/BomHead.service.impl.go index 2bf4581..5e0c455 100644 --- a/services/me/implments/BomHead.service.impl.go +++ b/services/me/implments/BomHead.service.impl.go @@ -156,6 +156,18 @@ func (impl *BomHeadServiceImplement) SelectOne(user *global.User, bomId string) if err != nil { return nil, err } + + if result != nil{ + var Me model.BomLst + Me.PlantNr = result.PlantNr + Me.BomId = result.BomId + bomList, err := Me.SetMenu(result.MatNr) + if err != nil { + return nil, err + } + result.BomLstLi = bomList + } + return result, nil } diff --git a/services/me/implments/BomLst.service.impl.go b/services/me/implments/BomLst.service.impl.go index 25ed5a7..f405422 100644 --- a/services/me/implments/BomLst.service.impl.go +++ b/services/me/implments/BomLst.service.impl.go @@ -3,11 +3,14 @@ package implments import ( + "fmt" + baseDal "leit.com/LAPP_CHEERSSON_BACKEND/dao/base" dal "leit.com/LAPP_CHEERSSON_BACKEND/dao/me" "leit.com/LAPP_CHEERSSON_BACKEND/db" "leit.com/LAPP_CHEERSSON_BACKEND/global" "leit.com/LAPP_CHEERSSON_BACKEND/grmi" meta "leit.com/LAPP_CHEERSSON_BACKEND/meta/me" + baseModel "leit.com/LAPP_CHEERSSON_BACKEND/models/base" model "leit.com/LAPP_CHEERSSON_BACKEND/models/me" ) @@ -112,18 +115,98 @@ func (impl *BomLstServiceImplement) InsertOne(user *global.User, entity *model.B engine := db.Eloquent.Master() session := engine.NewSession() defer session.Close() + if err := session.Begin(); err != nil { + fmt.Println(err.Error()) + return err + } dao := dal.NewBomLstDAO(session, user.PlantNr, user.UserId) + headDao := dal.NewBomHeadDAO(session, user.PlantNr, user.UserId) record, err := dao.SelectOne(entity.BomId, entity.FmatNr, entity.CmatNr) if err != nil { return err } if record != nil { + _ = session.Rollback() return grmi.NewBusinessError("已经存在相同主键的记录!") } err = dao.InsertOne(entity) if err != nil { + _ = session.Rollback() return err } + + articleDao := baseDal.NewArticleDAO(session, user.PlantNr, user.UserId) + article, err := articleDao.SelectOne(entity.FmatNr) + if err != nil { + _ = session.Rollback() + return grmi.NewBusinessError("查询物料数据失败, error:" + err.Error()) + } + if article == nil { + _ = session.Rollback() + return grmi.NewBusinessError("不存在对应的物料数据") + } + if article.ArtSpec1 != baseModel.ART_TYPE_FINISHED && article.ArtSpec1 != baseModel.ART_TYPE_VIRTUAL { + _ = session.Rollback() + return grmi.NewBusinessError("传递的物料不是总成或虚拟物料ID,artId:" + article.ArtId) + } + + article2, err := articleDao.SelectOne(entity.CmatNr) + if err != nil { + _ = session.Rollback() + return grmi.NewBusinessError("查询物料数据失败, error:" + err.Error()) + } + if article2 == nil { + _ = session.Rollback() + return grmi.NewBusinessError("不存在对应的物料数据") + } + //if article.ArtSpec1 == baseModel.ART_TYPE_VIRTUAL{ + // if article2.ArtSpec1 != baseModel.ART_TYPE_FINISHED { + // _ = session.Rollback() + // return grmi.NewBusinessError("传递的子物料不是总成, artId:" + article2.ArtId) + // } + //} else { + // if article2.ArtSpec1 == baseModel.ART_TYPE_FINISHED || article2.ArtSpec1 == baseModel.ART_TYPE_VIRTUAL { + // _ = session.Rollback() + // return grmi.NewBusinessError("传递的物料是总成或虚拟物料ID, artId:" + article2.ArtId) + // } + //} + + + if entity.FmatNr == entity.CmatNr{ + _ = session.Rollback() + return grmi.NewBusinessError("上级和下级物料ID相同") + } + bomHead, err := headDao.SelectOne(entity.BomId) + if err != nil { + _ = session.Rollback() + return err + } + if bomHead == nil { + article, err := articleDao.SelectOne(entity.BomId) + if err != nil { + _ = session.Rollback() + return err + } + if article == nil { + _ = session.Rollback() + return grmi.NewBusinessError("总成不存在") + } + if article.ArtSpec1 != baseModel.ART_TYPE_FINISHED && article.ArtSpec1 != baseModel.ART_TYPE_VIRTUAL { + _ = session.Rollback() + return grmi.NewBusinessError("传递的物料不是总成或虚拟物料ID") + } + headData := model.BomHead{ + BomId: entity.BomId, + MatNr: entity.BomId, + Descr: article.Descr1, + } + err = headDao.InsertOne(&headData) + if err != nil { + _ = session.Rollback() + return err + } + } + _ = session.Commit() return nil } diff --git a/web/controllers/me/BomHead.rest.go b/web/controllers/me/BomHead.rest.go index 579ae5f..9930c55 100644 --- a/web/controllers/me/BomHead.rest.go +++ b/web/controllers/me/BomHead.rest.go @@ -184,7 +184,7 @@ func RegisterSelectOneBomHead(party router.Party, path string, method func(*glob return } if result == nil { - supports.Error(ctx, iris.StatusNotFound, supports.NotFound, nil) + supports.Ok(ctx, supports.OptionSuccess, result) return } supports.Ok(ctx, supports.OptionSuccess, result) diff --git a/web/controllers/me/me.go b/web/controllers/me/me.go index cff7f54..a848807 100644 --- a/web/controllers/me/me.go +++ b/web/controllers/me/me.go @@ -75,7 +75,7 @@ func RegisterRoutes() { // BomHead的服务实例 var serviceOfBomHead = svr.NewBomHeadService() // BomHead插入一条 - // RegisterInsertOneBomHead(bomhead, "/insertone", serviceOfBomHead.InsertOne) + RegisterInsertOneBomHead(bomhead, "/insertone", serviceOfBomHead.InsertOne) // BomHead插入多条 // RegisterInsertBomHead(bomhead, "/insert", serviceOfBomHead.Insert) // BomHead删除一条 @@ -98,7 +98,7 @@ func RegisterRoutes() { // BomLst的服务实例 var serviceOfBomLst = svr.NewBomLstService() // BomLst插入一条 - // RegisterInsertOneBomLst(bomlst, "/insertone", serviceOfBomLst.InsertOne) + RegisterInsertOneBomLst(bomlst, "/insertone", serviceOfBomLst.InsertOne) // BomLst插入多条 // RegisterInsertBomLst(bomlst, "/insert", serviceOfBomLst.Insert) // BomLst删除一条