Browse Source

金蝶更新

pull/125/head
yehongyang 3 years ago
parent
commit
9610c5fdcb
6 changed files with 102 additions and 126 deletions
  1. +22
    -19
      services/ap/implments/CustArtlst.service.impl.go
  2. +63
    -92
      services/me/implments/BomLst.service.impl.go
  3. +12
    -7
      task/k3cloud.go
  4. +3
    -6
      utils/k3cloud.go
  5. +1
    -1
      utils/k3cloud/service/cust_material.go
  6. +1
    -1
      utils/k3cloud/service/eng_bom.go

+ 22
- 19
services/ap/implments/CustArtlst.service.impl.go View File

@ -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)


+ 63
- 92
services/me/implments/BomLst.service.impl.go View File

@ -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()


+ 12
- 7
task/k3cloud.go View File

@ -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()


+ 3
- 6
utils/k3cloud.go View File

@ -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
*/


+ 1
- 1
utils/k3cloud/service/cust_material.go View File

@ -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


+ 1
- 1
utils/k3cloud/service/eng_bom.go View File

@ -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


Loading…
Cancel
Save