diff --git a/services/base/implments/ProcessWorkPlaceLst.service.impl.go b/services/base/implments/ProcessWorkPlaceLst.service.impl.go index 7930ab0..8f08535 100644 --- a/services/base/implments/ProcessWorkPlaceLst.service.impl.go +++ b/services/base/implments/ProcessWorkPlaceLst.service.impl.go @@ -9,6 +9,7 @@ import ( meta "LAPP_LF_MOM_BACKEND/meta/base" model "LAPP_LF_MOM_BACKEND/models/base" "LAPP_LF_MOM_BACKEND/web/models" + "strconv" ) /****************************************************************************** @@ -186,29 +187,58 @@ func (impl *ProcessWorkPlaceLstServiceImplement) UpdateOne(user *models.Usertab, * @Reference LAPP_LF_MOM_BACKEND/services/base/ProcessWorkPlaceLstService.Insert * ******************************************************************************/ -func (impl *ProcessWorkPlaceLstServiceImplement) Insert(user *models.Usertab, entities *[]model.ProcessWorkPlaceLst) error { +func (impl *ProcessWorkPlaceLstServiceImplement) Insert(user *models.Usertab, entities model.ProcessWPInsert) error { grmi.Log(user, "/services/base/implments/ProcessWorkPlaceLst.service.impl.go", "InsertProcessWorkPlaceLst", "插入多个ProcessWorkPlaceLst") engine := db.Eloquent.Master() session := engine.NewSession() defer session.Close() + if err := session.Begin(); err != nil { + return err + } dao := dal.NewProcessWorkPlaceLstDAO(session, user.Pid, user.Userid) - for _, entity := range *entities { - record, err := dao.SelectOne(entity.PO, entity.WorkPlaceNr, entity.WorkLineId) + poDao := dal.NewProcessDAO(session, user.Pid, user.Userid) + wpDao := dal.NewWorkPlaceDAO(session, user.Pid, user.Userid) + po := entities.PO + workLineId := entities.WorkLineId + process, err := poDao.SelectOne(po, workLineId) + if err != nil { + _ = session.Rollback() + return err + } + if process == nil { + _ = session.Rollback() + return grmi.NewBusinessError("不存在对应的工序数据") + } + li := entities.ProcessWorkPlaceLstLi + for _, entity := range li { + if entity.PO != po || entity.WorkLineId != workLineId { + _ = session.Rollback() + return grmi.NewBusinessError("关联工序不一致") + } + workPlace, err := wpDao.SelectOne(entity.WorkPlaceNr) if err != nil { + _ = session.Rollback() return err } - if record != nil { - return grmi.NewBusinessError("已经存在相同主键的记录!") + if workPlace == nil { + _ = session.Rollback() + return grmi.NewBusinessError("不存在对应的工位,workPlaceNr:" + strconv.Itoa(entity.WorkPlaceNr)) } } - - err := dao.Insert(entities) + err = dao.DeleteWhere([]grmi.Predicate{meta.ProcessWorkPlaceLst_PO.NewPredicate(grmi.Equal, po), meta.ProcessWorkPlaceLst_WorkLineId.NewPredicate(grmi.Equal, workLineId)}) + if err != nil { + _ = session.Rollback() + return err + } + err = dao.Insert(&li) if err != nil { + _ = session.Rollback() return err } + _ = session.Commit() return nil }