allied-creation-byte-bank.go 1.8 KB
package domainService

import (
	"github.com/linmadan/egglib-go/core/application"
	"github.com/tidwall/gjson"
	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/constant"
	"gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/allied-lib/gateway/byte_bank"
)

type ByteBankService struct {
	internalService *byte_bank.HttpLibByteBankServiceGateway
}

func NewByteBankService() *ByteBankService {
	return &ByteBankService{
		internalService: byte_bank.NewHttpLibByteBankServiceGateway(constant.MMM_BYTE_BANK_HOST),
	}
}

//GetFormulasId 获取公式id
func (svr *ByteBankService) GetFormulasId(formulaName string) string {
	//获取公式id
	formulaId := ""
listLoop:
	for i := 0; ; i++ {
		data, err := svr.internalService.ListFormulas(1000, int64(i))
		if err != nil {
			return ""
		}
		if len(data.Formulas) == 0 {
			break listLoop
		}
		for _, item := range data.Formulas {

			if item.FormulaDescription == formulaName {
				formulaId = item.FormulaId
				break listLoop
			}
		}
	}
	return formulaId
}

// SectionProductive 时段产能
func (svr *ByteBankService) SectionProductive() (interface{}, error) {
	//获取公式id时段产能
	formulaId := svr.GetFormulasId("type_salesman_id")
	//获取解析数据
	byteResult, err := svr.internalService.AnalysisFormulaByte(formulaId)
	if err != nil {
		return struct{}{}, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
	}
	code := gjson.GetBytes(byteResult, "code").String()
	if code != "0" {
		msg := gjson.GetBytes(byteResult, "msg").String()
		return struct{}{}, application.ThrowError(application.INTERNAL_SERVER_ERROR, msg)
	}
	//待解析的
	queryResult := gjson.GetBytes(byteResult, "data.queryResult").Array()
	for _, item := range queryResult {
		if item.Get("type_salesman_id").String() != "" {
			continue
		}
	}
	return nil, nil
}