|
|
- // Copyright (c) Shenyang Leading Edge Intelligent Technology Co., Ltd. All rights reserved.
-
- 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"
- "leit.com/LAPP_CHEERSSON_BACKEND/utils"
- )
-
- /******************************************************************************
- *
- * @Description : BomLst的默认查询条件
- *
- * @Author : 代码生成器创建
- *
- * @Date : 2021-08-09 14:13:50
- *
- ******************************************************************************/
- var DefaultConditionOfBomLst = grmi.NewCondition(
- map[string]grmi.ConditionItem{
- meta.BomLst_BomId.UrlParameterName: grmi.NewConditionItem(meta.BomLst_BomId, grmi.Equal, true),
- meta.BomLst_FmatNr.UrlParameterName: grmi.NewConditionItem(meta.BomLst_FmatNr, grmi.Equal, true),
- meta.BomLst_CmatNr.UrlParameterName: grmi.NewConditionItem(meta.BomLst_CmatNr, grmi.Equal, true),
- meta.BomLst_FmatName.UrlParameterName: grmi.NewConditionItem(meta.BomLst_FmatName, grmi.Equal, false),
- meta.BomLst_FmatSpec.UrlParameterName: grmi.NewConditionItem(meta.BomLst_FmatSpec, grmi.Equal, false),
- meta.BomLst_FmatQty.UrlParameterName: grmi.NewConditionItem(meta.BomLst_FmatQty, grmi.Equal, false),
- meta.BomLst_FmatUom.UrlParameterName: grmi.NewConditionItem(meta.BomLst_FmatUom, grmi.Equal, false),
- meta.BomLst_CmatName.UrlParameterName: grmi.NewConditionItem(meta.BomLst_CmatName, grmi.Equal, false),
- meta.BomLst_CmatQty.UrlParameterName: grmi.NewConditionItem(meta.BomLst_CmatQty, grmi.Equal, false),
- meta.BomLst_CmatUom.UrlParameterName: grmi.NewConditionItem(meta.BomLst_CmatUom, grmi.Equal, false),
- meta.BomLst_CmatType.UrlParameterName: grmi.NewConditionItem(meta.BomLst_CmatType, grmi.Equal, false),
- meta.BomLst_Position.UrlParameterName: grmi.NewConditionItem(meta.BomLst_Position, grmi.Equal, false),
- meta.BomLst_LeadTime.UrlParameterName: grmi.NewConditionItem(meta.BomLst_LeadTime, grmi.Equal, false),
- meta.BomLst_TimeUom.UrlParameterName: grmi.NewConditionItem(meta.BomLst_TimeUom, grmi.Equal, false),
- meta.BomLst_LossRate.UrlParameterName: grmi.NewConditionItem(meta.BomLst_LossRate, grmi.Equal, false),
- meta.BomLst_BackFlushItem.UrlParameterName: grmi.NewConditionItem(meta.BomLst_BackFlushItem, grmi.Equal, false),
- meta.BomLst_CriticalItem.UrlParameterName: grmi.NewConditionItem(meta.BomLst_CriticalItem, grmi.Equal, false),
- meta.BomLst_ValidFrom.UrlParameterName: grmi.NewConditionItem(meta.BomLst_ValidFrom, grmi.Equal, false),
- meta.BomLst_ValidTo.UrlParameterName: grmi.NewConditionItem(meta.BomLst_ValidTo, grmi.Equal, false),
- meta.BomLst_BomlstCval1.UrlParameterName: grmi.NewConditionItem(meta.BomLst_BomlstCval1, grmi.Equal, false),
- meta.BomLst_BomlstCval2.UrlParameterName: grmi.NewConditionItem(meta.BomLst_BomlstCval2, grmi.Equal, false),
- meta.BomLst_BomlstIval1.UrlParameterName: grmi.NewConditionItem(meta.BomLst_BomlstIval1, grmi.Equal, false),
- meta.BomLst_BomlstIval2.UrlParameterName: grmi.NewConditionItem(meta.BomLst_BomlstIval2, grmi.Equal, false),
- meta.BomLst_LevelNr.UrlParameterName: grmi.NewConditionItem(meta.BomLst_LevelNr, grmi.Equal, false),
- meta.BomLst_LastModify.UrlParameterName: grmi.NewConditionItem(meta.BomLst_LastModify, grmi.Approximate, false),
- meta.BomLst_LastUser.UrlParameterName: grmi.NewConditionItem(meta.BomLst_LastUser, grmi.Equal, false),
- meta.BomLst_CreateTime.UrlParameterName: grmi.NewConditionItem(meta.BomLst_CreateTime, grmi.Approximate, false),
- },
- nil,
- )
-
- /******************************************************************************
- *
- * @Description : BomLst的默认分页查询条件
- *
- * @Author : 代码生成器创建
- *
- * @Date : 2021-08-09 14:13:50
- *
- ******************************************************************************/
- var DefaultConditionOfBomLstAndPaging = grmi.NewCondition(
- DefaultConditionOfBomLst.Items,
- grmi.NewPaging(),
- )
-
- /******************************************************************************
- *
- * @Struct Name : BomLstServiceImplement
- *-----------------------------------------------------------------------------
- *
- * @Description : BomLst的服务实现
- *
- * @Author : 代码生成器创建
- *
- * @Date : 2021-08-09 14:13:50
- *
- ******************************************************************************/
- type BomLstServiceImplement struct {
- }
-
- /******************************************************************************
- *
- * @Function Name : NewBomLstDAOImplement
- *-----------------------------------------------------------------------------
- *
- * @Description : 创建一个BomLstDAOImplement实例
- *
- * @Return Value : BomLstDAOImplement实例
- *
- * @Author : 代码生成器创建
- *
- * @Date : 2021-08-09 14:13:50
- *
- ******************************************************************************/
- func NewBomLstServiceImplement() *BomLstServiceImplement {
- return &BomLstServiceImplement{}
- }
-
- func (impl *BomLstServiceImplement) ImportBomList(response map[int][][]interface{}) {
- grmi.Log(nil, "/services/me/implments/BomLst.service.impl.go", "ImportBomList", "导入bomlist")
- engine := db.Eloquent.Master()
- session := engine.NewSession()
- defer session.Close()
- if err := session.Begin(); err != nil {
- fmt.Println(err.Error())
- return
- }
- dao := dal.NewBomLstDAO(session, baseModel.PlantNr, "System")
- articleDao := baseDal.NewArticleDAO(session, baseModel.PlantNr, "System")
- headDao := dal.NewBomHeadDAO(session, baseModel.PlantNr, "System")
- articleMap := make(map[string]baseModel.Article)
- sonArticleMap := make(map[string]baseModel.Article)
- headMap := make(map[string]*model.BomHead)
- _ = session.Begin()
- var dataArr []model.BomLst
- var headArr []model.BomHead
- for _, v := range response {
- for k, _v := range v {
- //查询物料
- if _, ok := articleMap[utils.ValueToString(_v[15], "")]; !ok {
- _article, err := articleDao.SelectOne(utils.ValueToString(_v[15], ""))
- if err != nil || _article == nil {
- continue
- }
- articleMap[utils.ValueToString(_v[15], "")] = *_article
- sonArticleMap[utils.ValueToString(_v[15], "")] = *_article
- } else {
- if k == 0 {
- //不存重复物料bom
- break
- }
- }
- _article := articleMap[utils.ValueToString(_v[15], "")]
- if k == 0 {
- //先删除零件下所有bom
- _ = dao.DeleteWhere([]grmi.Predicate{
- meta.BomLst_BomId.NewPredicate(grmi.Equal, _article.ArtId),
- })
- //查询head
- _headInfo := &model.BomHead{}
- if _info, ok := headMap[_article.ArtId]; ok {
- _headInfo = _info
- } else {
- _info, err := headDao.SelectOne(_article.ArtId)
- if err != nil {
- continue
- }
- _headInfo = _info
- }
- if _headInfo == nil {
- _headInfo = &model.BomHead{
- PlantNr: baseModel.PlantNr,
- BomId: _article.ArtId,
- MatNr: _article.ArtId,
- Descr: _article.Descr1,
- }
- headMap[_article.ArtId] = _headInfo
- headArr = append(headArr, *_headInfo)
- }
- }
- //子物料
- if _, ok := sonArticleMap[utils.ValueToString(_v[16], "")]; !ok {
- _article, err := articleDao.SelectOne(utils.ValueToString(_v[16], ""))
- if err != nil || _article == nil {
- continue
- }
- sonArticleMap[utils.ValueToString(_v[16], "")] = *_article
- }
- _sonArticel := sonArticleMap[utils.ValueToString(_v[16], "")]
- //插入
- dataArr = append(dataArr, model.BomLst{
- PlantNr: baseModel.PlantNr,
- BomId: _article.ArtId,
- FmatNr: _article.ArtId,
- FmatName: _article.Descr1,
- FmatSpec: _article.ArtSpec2,
- FmatQty: 1,
- FmatUom: utils.ValueToString(_v[17], ""),
- CmatNr: _sonArticel.ArtId,
- CmatName: _sonArticel.Descr1,
- CmatQty: utils.ValueToFloat(_v[6], 0) / utils.ValueToFloat(_v[7], 0),
- CmatUom: utils.ValueToString(_v[18], ""),
- CmatType: utils.ValueToString(_v[9], ""),
- Position: utils.ValueToInt(_v[12], 0),
- TimeUom: utils.ValueToString(_v[10], ""),
- LossRate: utils.ValueToFloat(_v[11], 0),
- ValidFrom: utils.ValueToString(_v[13], ""),
- ValidTo: utils.ValueToString(_v[14], ""),
- })
- }
- }
- _ = session.Begin()
- //写入数据库
- if len(dataArr) > 20 {
- var _detail []model.BomLst
- for k, v := range dataArr {
- _detail = append(_detail, v)
- if (k > 0 && k%20 == 0) || k+1 == len(dataArr) {
- err := dao.Insert(&_detail)
- if err != nil {
- _ = session.Rollback()
- panic(err.Error())
- }
- _detail = []model.BomLst{}
- }
- }
- } else {
- err := dao.Insert(&dataArr)
- if err != nil {
- _ = session.Rollback()
- panic(err)
- }
- }
- if len(headArr) > 20 {
- var _detail []model.BomHead
- for k, v := range headArr {
- _detail = append(_detail, v)
- if (k > 0 && k%20 == 0) || k+1 == len(headArr) {
- err := headDao.Insert(&_detail)
- if err != nil {
- _ = session.Rollback()
- panic(err.Error())
- }
- _detail = []model.BomHead{}
- }
- }
- } else {
- err := headDao.Insert(&headArr)
- if err != nil {
- _ = session.Rollback()
- }
- }
-
- _ = session.Commit()
- }
-
- /******************************************************************************
- *
- * @Reference LAPP_GAAS_GFrame_BACKEND/services/me/BomLstService.InsertOne
- *
- ******************************************************************************/
- func (impl *BomLstServiceImplement) InsertOne(user *global.User, entity *model.BomLst) error {
-
- grmi.Log(user, "/services/me/implments/BomLst.service.impl.go", "InsertOneBomLst", "插入一个BomLst")
-
- 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 || entity.CmatNr == entity.BomId {
- _ = 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.ArtTypeId != baseModel.ART_TYPE_FINISHED {
- _ = session.Rollback()
- return grmi.NewBusinessError("传递的物料不是成品!")
- }
- 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
- }
-
- /******************************************************************************
- *
- * @Reference LAPP_GAAS_GFrame_BACKEND/services/me/BomLstService.DeleteOne
- *
- ******************************************************************************/
- func (impl *BomLstServiceImplement) DeleteOne(user *global.User, bomId string, fmatNr string, cmatNr string) error {
-
- grmi.Log(user, "/services/me/implments/BomLst.service.impl.go", "DeleteOneBomLst", "删除一个BomLst")
-
- engine := db.Eloquent.Master()
- session := engine.NewSession()
- defer session.Close()
- if err := session.Begin(); err != nil {
- return err
- }
- dao := dal.NewBomLstDAO(session, user.PlantNr, user.UserId)
- headDao := dal.NewBomHeadDAO(session, user.PlantNr, user.UserId)
- record, err := dao.SelectOne(bomId, fmatNr, cmatNr)
- if err != nil {
- _ = session.Rollback()
- return err
- }
- if record == nil {
- _ = session.Rollback()
- return grmi.NewBusinessError("不存在指定记录!")
- }
- err = dao.DeleteOne(bomId, fmatNr, cmatNr)
- if err != nil {
- _ = session.Rollback()
- return err
- }
- lstLi, err := dao.Select([]grmi.Predicate{meta.BomLst_BomId.NewPredicate(grmi.Equal, bomId)}, nil)
- if err != nil {
- _ = session.Rollback()
- return err
- }
- if len(lstLi) == 0 {
- err = headDao.DeleteOne(bomId)
- if err != nil {
- _ = session.Rollback()
- return err
- }
- }
- _ = session.Commit()
- return nil
- }
-
- /******************************************************************************
- *
- * @Reference LAPP_GAAS_GFrame_BACKEND/services/me/BomLstService.SelectOne
- *
- ******************************************************************************/
- func (impl *BomLstServiceImplement) SelectOne(user *global.User, bomId string, fmatNr string, cmatNr string) (*model.BomLst, error) {
-
- grmi.Log(user, "/services/me/implments/BomLst.service.impl.go", "SelectOneBomLst", "查询一个BomLst")
-
- engine := db.Eloquent.Master()
- session := engine.NewSession()
- defer session.Close()
- dao := dal.NewBomLstDAO(session, user.PlantNr, user.UserId)
- result, err := dao.SelectOne(bomId, fmatNr, cmatNr)
- if err != nil {
- return nil, err
- }
- return result, nil
- }
-
- /******************************************************************************
- *
- * @Reference LAPP_GAAS_GFrame_BACKEND/services/me/BomLstService.UpdateOne
- *
- ******************************************************************************/
- func (impl *BomLstServiceImplement) UpdateOne(user *global.User, entity *model.BomLst) error {
-
- grmi.Log(user, "/services/me/implments/BomLst.service.impl.go", "UpdateOneBomLst", "修改一个BomLst")
-
- engine := db.Eloquent.Master()
- session := engine.NewSession()
- defer session.Close()
- dao := dal.NewBomLstDAO(session, user.PlantNr, user.UserId)
- record, err := dao.SelectOne(entity.BomId, entity.FmatNr, entity.CmatNr)
- if err != nil {
- return err
- }
- if record == nil {
- return grmi.NewBusinessError("不存在指定记录!")
- }
- err = dao.UpdateOne(entity)
- if err != nil {
- return err
- }
- return nil
- }
-
- /******************************************************************************
- *
- * @Reference LAPP_GAAS_GFrame_BACKEND/services/me/BomLstService.Insert
- *
- ******************************************************************************/
- func (impl *BomLstServiceImplement) Insert(user *global.User, entities *[]model.BomLst) error {
-
- grmi.Log(user, "/services/me/implments/BomLst.service.impl.go", "InsertBomLst", "插入多个BomLst")
-
- engine := db.Eloquent.Master()
- session := engine.NewSession()
- defer session.Close()
- dao := dal.NewBomLstDAO(session, user.PlantNr, user.UserId)
-
- for _, entity := range *entities {
- record, err := dao.SelectOne(entity.BomId, entity.FmatNr, entity.CmatNr)
- if err != nil {
- return err
- }
- if record != nil {
- return grmi.NewBusinessError("已经存在相同主键的记录!")
- }
- }
-
- err := dao.Insert(entities)
- if err != nil {
- return err
- }
- return nil
- }
-
- /******************************************************************************
- *
- * @Reference LAPP_GAAS_GFrame_BACKEND/services/me/BomLstService.Delete
- *
- ******************************************************************************/
- func (impl *BomLstServiceImplement) Delete(user *global.User, entities *[]model.BomLst) error {
-
- grmi.Log(user, "/services/me/implments/BomLst.service.impl.go", "DeleteBomLst", "删除多个BomLst")
-
- engine := db.Eloquent.Master()
- session := engine.NewSession()
- defer session.Close()
- dao := dal.NewBomLstDAO(session, user.PlantNr, user.UserId)
-
- for _, entity := range *entities {
- record, err := dao.SelectOne(entity.BomId, entity.FmatNr, entity.CmatNr)
- if err != nil {
- return err
- }
- if record == nil {
- return grmi.NewBusinessError("不存在指定记录!")
- }
- }
-
- err := dao.Delete(entities)
- if err != nil {
- return err
- }
- return nil
- }
-
- /******************************************************************************
- *
- * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/BomLstService.Select
- *
- ******************************************************************************/
- func (impl *BomLstServiceImplement) Select(user *global.User, urlParameters map[string]string) ([]model.BomLst, error) {
-
- grmi.Log(user, "/services/me/implments/BomLst.service.impl.go", "SelectBomLst", "查询BomLst")
-
- condition := DefaultConditionOfBomLstAndPaging
- engine := db.Eloquent.Master()
- session := engine.NewSession()
- defer session.Close()
- predicates, err := condition.BuildPredicates(urlParameters)
- if err != nil {
- return nil, err
- }
- dao := dal.NewBomLstDAO(session, user.PlantNr, user.UserId)
- result, err := dao.Select(predicates, condition.OrderByFields)
- if err != nil {
- return nil, err
- }
- return result, nil
- }
-
- /******************************************************************************
- *
- * @Reference leit.com/LAPP_CHEERSSON_BACKEND/services/me/BomLstService.SelectAndPaging
- *
- ******************************************************************************/
- func (impl *BomLstServiceImplement) SelectAndPaging(user *global.User, urlParameters map[string]string) (grmi.PagingResult, error) {
-
- grmi.Log(user, "/services/me/implments/BomLst.service.impl.go", "SelectBomLst", "查询BomLst")
-
- condition := DefaultConditionOfBomLstAndPaging
- engine := db.Eloquent.Master()
- session := engine.NewSession()
- defer session.Close()
- predicates, err := condition.BuildPredicates(urlParameters)
- if err != nil {
- return grmi.EmptyPagingResult, err
- }
- dao := dal.NewBomLstDAO(session, user.PlantNr, user.UserId)
- condition.Fill(urlParameters)
- result, err := dao.SelectAndPaging(condition.Paging, predicates, condition.OrderByFields)
- if err != nil {
- return grmi.EmptyPagingResult, err
- }
- return result, nil
- }
-
- /******************************************************************************
- *
- * @Reference LAPP_ACURA_MOM_BACKEND/services/me/BomLstService.Update
- *
- ******************************************************************************/
- func (impl *BomLstServiceImplement) Update(user *global.User, entities *[]model.BomLst) error {
-
- grmi.Log(user, "/services/me/implments/BomLst.service.impl.go", "UpdateBomLst", "修改多个BomLst")
-
- engine := db.Eloquent.Master()
- session := engine.NewSession()
- defer session.Close()
- dao := dal.NewBomLstDAO(session, user.PlantNr, user.UserId)
-
- for _, entity := range *entities {
- record, err := dao.SelectOne(entity.BomId, entity.FmatNr, entity.CmatNr)
- if err != nil {
- return err
- }
- if record == nil {
- return grmi.NewBusinessError("不存在指定记录!")
- }
- }
-
- err := dao.Update(entities)
- if err != nil {
- return err
- }
- return nil
- }
|