diff --git a/services/ap/implments/CustArtlst.service.impl.go b/services/ap/implments/CustArtlst.service.impl.go index 85d9aca..034ec21 100644 --- a/services/ap/implments/CustArtlst.service.impl.go +++ b/services/ap/implments/CustArtlst.service.impl.go @@ -590,29 +590,32 @@ func (impl *CustArtlstServiceImplement) ImportCustArtlst(FieldKeysStr string, li resultMap[resultKey] = append(resultMap[resultKey], valMap) } - - for customerId, vals := range resultMap { - //查询客户信息 - custInfo, err := custDao.SelectOneByFcustId(customerId) - if err != nil { - return err - } - if custInfo == nil { - return errors.New("客户信息不存在!") - } - //第二步,删除客户维护关系 - err = dao.DeleteWhere([]grmi.Predicate{meta.CustArtlst_CustomerId.NewPredicate(grmi.Equal, custInfo.CustomerId)}) - if err != nil { - return err - } - + _custInfo := model_base.Customer{} + for _, vals := range resultMap { //第三步,添加客户物料 - for _, v := range vals { + for k, v := range vals { + if k == 0 { + //查询客户信息 + custInfo, err := custDao.SelectOne(utils.ValueToString(v["FCustomerId.FNumber"], "")) + if err != nil { + return err + } + if custInfo == nil { + return errors.New("客户信息不存在!") + } + _custInfo = *custInfo + //第二步,删除客户维护关系 + err = dao.DeleteWhere([]grmi.Predicate{meta.CustArtlst_CustomerId.NewPredicate(grmi.Equal, custInfo.CustomerId)}) + if err != nil { + return err + } + } //status := utils.ValueToString(v["FDocumentStatus"], "") //if status != "C" { // continue //} - artInfo, err := artDao.SelectOneByFMaterialId(utils.ValueToInt(v["FMaterialId"], 0)) + //artInfo, err := artDao.SelectOneByFMaterialId(utils.ValueToInt(v["FMaterialId"], 0)) + artInfo, err := artDao.SelectOne(utils.ValueToString(v["FMaterialId.FNumber"], "")) if err != nil { return err } @@ -621,7 +624,7 @@ func (impl *CustArtlstServiceImplement) ImportCustArtlst(FieldKeysStr string, li } oneData := new(model.CustArtlst) oneData.PlantNr = model_base.PlantNr - oneData.CustomerId = custInfo.CustomerId + oneData.CustomerId = _custInfo.CustomerId oneData.ArtId = artInfo.ArtId oneData.Descr1 = utils.ValueToString(v["FCustMatName"], "") err = dao.InsertOne(oneData) diff --git a/services/me/implments/BomLst.service.impl.go b/services/me/implments/BomLst.service.impl.go index ecad369..337b9f9 100644 --- a/services/me/implments/BomLst.service.impl.go +++ b/services/me/implments/BomLst.service.impl.go @@ -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() diff --git a/task/k3cloud.go b/task/k3cloud.go index d00dca4..fcc9234 100644 --- a/task/k3cloud.go +++ b/task/k3cloud.go @@ -30,9 +30,13 @@ var serviceOfProject = svrMe.NewProjectService() var serviceOfUom = svr.NewUomService() func TaskInit() { - erp.PublishPlan(100, "admin") + i := true for true { oneTask(time.Time{}) + if i { + erp.PublishPlan(100, "admin") + i = false + } time.Sleep(time.Hour * 1) } } @@ -41,16 +45,17 @@ func TaskInit() { func oneTask(_date time.Time) { //需要定时登录erp utils.K3configInit() + //if DaysBetweenDates(lastTime.OneTime, _date) >= 1 { //go func() { - //ImportMaterial() - //ImportMaterialGroupSearch() - //ImportArticle() - //ImportBomList() - //ImportCustomer() + ImportMaterial() + ImportMaterialGroupSearch() + ImportArticle() + ImportBomList() + ImportCustomer() //ImportSaleOrder() - //ImportCustomerMaterialSearch() + ImportCustomerMaterialSearch() //ImportProjectSearch() //}() //ImportUnit() diff --git a/utils/k3cloud.go b/utils/k3cloud.go index 94bc8ac..937f439 100644 --- a/utils/k3cloud.go +++ b/utils/k3cloud.go @@ -55,9 +55,9 @@ func K3configInit() { k3config.Password = password k3config.Username = username k3config.LcID = 2052 - k3config.FUseOrgId = "1" + k3config.FUseOrgId = "100729" k3config.session = util.NewBrowser() - k3config.FUseOrgNo = "C" + k3config.FUseOrgNo = "9999" k3config.Login() K3Obj = k3config } @@ -84,10 +84,6 @@ func (K3config *K3config) SearchApi(formId string, search interface{}) ([][]inte if err != nil { return nil, err } - _response := response.K3ResponseToStruct(res) - if !_response.Result.ResponseStatus.IsSuccess { - return nil, fmt.Errorf("%s", _response.Result.ResponseStatus.Errors) - } return response.K3ResponseToMap(res), nil } @@ -120,6 +116,7 @@ func (K3config *K3config) BillCloseApi(formId string, saveData request.CloseRequ fmt.Print(response) return &response, nil } + /** 返回session */ diff --git a/utils/k3cloud/service/cust_material.go b/utils/k3cloud/service/cust_material.go index 202e6f1..f36c7f7 100644 --- a/utils/k3cloud/service/cust_material.go +++ b/utils/k3cloud/service/cust_material.go @@ -16,7 +16,7 @@ func CustomerMaterialInit() *CustomerMaterialService { cust := &CustomerMaterialService{ K3config: utils.K3Obj, FormID: "SAL_CustMatMapping", - FieldKeys: "FBillNo,FDocumentStatus,FCustomerId,FName,FIsOldVersion,FIsMultiple,FCustMatNo,FMaterialId,FCustMatName,FEffective", + FieldKeys: "FBillNo,FDocumentStatus,FCustomerId,FName,FIsOldVersion,FIsMultiple,FCustMatNo,FMaterialId,FCustMatName,FEffective,FMaterialId.FNumber,FCustomerId.FNumber", FUseOrgKey: "FSaleOrgId=" + utils.K3Obj.FUseOrgId, } return cust diff --git a/utils/k3cloud/service/eng_bom.go b/utils/k3cloud/service/eng_bom.go index 8f6c827..bc5aeaf 100644 --- a/utils/k3cloud/service/eng_bom.go +++ b/utils/k3cloud/service/eng_bom.go @@ -17,7 +17,7 @@ func EngBomServiceInit() *EngBomService { cust := &EngBomService{ K3config: utils.K3Obj, FormID: "ENG_BOM", - FieldKeys: "FNumber,FName,FMATERIALID,FMATERIALIDCHILD,FDocumentStatus,FUNITID,FNUMERATOR,FDENOMINATOR,FCHILDUNITID,FMATERIALTYPE,FTIMEUNIT,FFIXSCRAPQTYLOT,FReplaceGroup,FEFFECTDATE,FEXPIREDATE", + FieldKeys: "FNumber,FName,FMATERIALID,FMATERIALIDCHILD,FDocumentStatus,FUNITID,FNUMERATOR,FDENOMINATOR,FCHILDUNITID,FMATERIALTYPE,FTIMEUNIT,FFIXSCRAPQTYLOT,FReplaceGroup,FEFFECTDATE,FEXPIREDATE,FMATERIALID.FNumber,FMATERIALIDCHILD.FNumber,FUNITID.FNumber,FCHILDUNITID.FNumber", FUseOrgKey: "FUseOrgId=" + utils.K3Obj.FUseOrgId, } return cust