|
|
@ -9,7 +9,6 @@ import ( |
|
|
|
"leit.com/LAPP_CHEERSSON_BACKEND/db" |
|
|
|
"leit.com/LAPP_CHEERSSON_BACKEND/global" |
|
|
|
"leit.com/LAPP_CHEERSSON_BACKEND/grmi" |
|
|
|
metaBase "leit.com/LAPP_CHEERSSON_BACKEND/meta/base" |
|
|
|
meta "leit.com/LAPP_CHEERSSON_BACKEND/meta/me" |
|
|
|
baseModel "leit.com/LAPP_CHEERSSON_BACKEND/models/base" |
|
|
|
model "leit.com/LAPP_CHEERSSON_BACKEND/models/me" |
|
|
@ -117,113 +116,85 @@ func (impl *BomLstServiceImplement) ImportBomList(response map[int][][]interface |
|
|
|
dao := dal.NewBomLstDAO(session, baseModel.PlantNr, "System") |
|
|
|
articleDao := baseDal.NewArticleDAO(session, baseModel.PlantNr, "System") |
|
|
|
headDao := dal.NewBomHeadDAO(session, baseModel.PlantNr, "System") |
|
|
|
articleMap := make(map[int]baseModel.Article) |
|
|
|
sonArticleMap := make(map[int]baseModel.Article) |
|
|
|
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 |
|
|
|
uomDao := baseDal.NewUomDAO(session, baseModel.PlantNr, "System") |
|
|
|
uomMap := make(map[int]baseModel.Uom) |
|
|
|
for k, v := range response { |
|
|
|
//查询物料
|
|
|
|
if _, ok := articleMap[k]; !ok { |
|
|
|
article, err := articleDao.Select([]grmi.Predicate{ |
|
|
|
metaBase.Article_FMaterialId.NewPredicate(grmi.Equal, k), |
|
|
|
}, nil) |
|
|
|
if err != nil || len(article) == 0 { |
|
|
|
continue |
|
|
|
} |
|
|
|
_article := article[0] |
|
|
|
articleMap[k] = _article |
|
|
|
sonArticleMap[k] = _article |
|
|
|
//查询head
|
|
|
|
//先删除零件下所有bom
|
|
|
|
_ = dao.DeleteWhere([]grmi.Predicate{ |
|
|
|
meta.BomLst_BomId.NewPredicate(grmi.Equal, _article.ArtId), |
|
|
|
}) |
|
|
|
_headInfo := &model.BomHead{} |
|
|
|
if _info, ok := headMap[_article.ArtId]; ok { |
|
|
|
_headInfo = _info |
|
|
|
} else { |
|
|
|
_info, err := headDao.SelectOne(_article.ArtId) |
|
|
|
if err != nil { |
|
|
|
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 |
|
|
|
} |
|
|
|
_headInfo = _info |
|
|
|
} |
|
|
|
if _headInfo == nil { |
|
|
|
_headInfo = &model.BomHead{ |
|
|
|
PlantNr: baseModel.PlantNr, |
|
|
|
BomId: _article.ArtId, |
|
|
|
MatNr: _article.ArtId, |
|
|
|
Descr: _article.Descr1, |
|
|
|
articleMap[utils.ValueToString(_v[15], "")] = *_article |
|
|
|
sonArticleMap[utils.ValueToString(_v[15], "")] = *_article |
|
|
|
} else { |
|
|
|
if k == 0 { |
|
|
|
//不存重复物料bom
|
|
|
|
break |
|
|
|
} |
|
|
|
headMap[_article.ArtId] = _headInfo |
|
|
|
headArr = append(headArr, *_headInfo) |
|
|
|
} |
|
|
|
for _, _v := range v { |
|
|
|
_sonArticel := baseModel.Article{} |
|
|
|
if _info, ok := sonArticleMap[utils.ValueToInt(_v[3], 0)]; ok { |
|
|
|
_sonArticel = _info |
|
|
|
} else { |
|
|
|
article, err := articleDao.Select([]grmi.Predicate{ |
|
|
|
metaBase.Article_FMaterialId.NewPredicate(grmi.Equal, _v[3]), |
|
|
|
}, nil) |
|
|
|
if err != nil || len(article) == 0 { |
|
|
|
continue |
|
|
|
} |
|
|
|
_sonArticel = article[0] |
|
|
|
} |
|
|
|
sonArticleMap[utils.ValueToInt(_v[3], 0)] = _sonArticel |
|
|
|
fmatUom := baseModel.Uom{} |
|
|
|
cmatUom := baseModel.Uom{} |
|
|
|
if _info, ok := uomMap[utils.ValueToInt(_v[5], 0)]; ok { |
|
|
|
fmatUom = _info |
|
|
|
_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 := uomDao.Get(utils.ValueToInt(_v[5], 0)) |
|
|
|
_info, err := headDao.SelectOne(_article.ArtId) |
|
|
|
if err != nil { |
|
|
|
continue |
|
|
|
} |
|
|
|
fmatUom = *_info |
|
|
|
uomMap[utils.ValueToInt(_v[5], 0)] = fmatUom |
|
|
|
_headInfo = _info |
|
|
|
} |
|
|
|
if _info, ok := uomMap[utils.ValueToInt(_v[8], 0)]; ok { |
|
|
|
cmatUom = _info |
|
|
|
} else { |
|
|
|
//查询
|
|
|
|
_info, err := uomDao.Get(utils.ValueToInt(_v[8], 0)) |
|
|
|
if err != nil { |
|
|
|
continue |
|
|
|
if _headInfo == nil { |
|
|
|
_headInfo = &model.BomHead{ |
|
|
|
PlantNr: baseModel.PlantNr, |
|
|
|
BomId: _article.ArtId, |
|
|
|
MatNr: _article.ArtId, |
|
|
|
Descr: _article.Descr1, |
|
|
|
} |
|
|
|
cmatUom = *_info |
|
|
|
uomMap[utils.ValueToInt(_v[8], 0)] = cmatUom |
|
|
|
headMap[_article.ArtId] = _headInfo |
|
|
|
headArr = append(headArr, *_headInfo) |
|
|
|
} |
|
|
|
//插入
|
|
|
|
dataArr = append(dataArr, model.BomLst{ |
|
|
|
PlantNr: baseModel.PlantNr, |
|
|
|
BomId: _article.ArtId, |
|
|
|
FmatNr: _article.ArtId, |
|
|
|
FmatName: _article.Descr1, |
|
|
|
FmatSpec: _article.ArtSpec2, |
|
|
|
FmatQty: 1, |
|
|
|
FmatUom: fmatUom.UomId, |
|
|
|
CmatNr: _sonArticel.ArtId, |
|
|
|
CmatName: _sonArticel.Descr1, |
|
|
|
CmatQty: utils.ValueToFloat(_v[6], 0) / utils.ValueToFloat(_v[7], 0), |
|
|
|
CmatUom: cmatUom.UomId, |
|
|
|
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], ""), |
|
|
|
}) |
|
|
|
} |
|
|
|
} else { |
|
|
|
//不存在重复的物料bom
|
|
|
|
continue |
|
|
|
//子物料
|
|
|
|
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() |
|
|
|