diff --git a/services/pln/ToyotaCalloff.service.go b/services/pln/ToyotaCalloff.service.go index bd1f399..31e4c7b 100644 --- a/services/pln/ToyotaCalloff.service.go +++ b/services/pln/ToyotaCalloff.service.go @@ -234,6 +234,8 @@ type ToyotaCalloffService interface { * ******************************************************************************/ AnalysisAgain(user *global.User, demandId string) error + // ExportPageData 导出页面数据 + ExportPageData(user *global.User, urlParameters map[string]string) (filepath string, err error) } /****************************************************************************** diff --git a/services/pln/implments/ToyotaCalloff.service.impl.go b/services/pln/implments/ToyotaCalloff.service.impl.go index 1e80ab1..6e16b65 100644 --- a/services/pln/implments/ToyotaCalloff.service.impl.go +++ b/services/pln/implments/ToyotaCalloff.service.impl.go @@ -11,6 +11,7 @@ import ( "LAPP_ACURA_MOM_BACKEND/global" "LAPP_ACURA_MOM_BACKEND/grmi" "LAPP_ACURA_MOM_BACKEND/infra/logger" + baseMeta "LAPP_ACURA_MOM_BACKEND/meta/base" meMeta "LAPP_ACURA_MOM_BACKEND/meta/me" meta "LAPP_ACURA_MOM_BACKEND/meta/pln" baseModel "LAPP_ACURA_MOM_BACKEND/models/base" @@ -22,6 +23,7 @@ import ( "io/ioutil" "os" "path" + "reflect" "regexp" "strconv" "strings" @@ -1114,3 +1116,120 @@ func (impl *ToyotaCalloffServiceImplement) AnalysisAgain(user *global.User, dema _ = session.Commit() return nil } + + +// ExportPageData 导出页面数据 +func (impl *ToyotaCalloffServiceImplement) ExportPageData(user *global.User, urlParameters map[string]string) (filepath string, err error) { + + grmi.Log(user, "/services/pln/implments/ToyotaCalloff.service.impl.go", "ExportPageData", "导出页面数据") + + condition := DefaultConditionOfToyotaCalloffAndPaging + engine := db.Eloquent.Master() + session := engine.NewSession() + defer session.Close() + tolnameDao := baseDal.NewTabColNameDAO(session, user.UserId) + _, exist := urlParameters["Parsed"] + if !exist { + urlParameters["Parsed"] = "-1" + } + + predicates, err := condition.BuildPredicates(urlParameters) + if err != nil { + return + } + start, exist := urlParameters["start"] + if exist { + start += " 00:00:00" + _, err = time.ParseInLocation(grmi.DateTimeOutFormat, start, utils.TimezoneLocation) + if err != nil { + err = grmi.NewBusinessError("开始日期格式错误") + return + } + p := grmi.Predicate{ + ColumnName: meta.ToyotaCalloff_OrderTime.ColumnName, + PredicateType: func(predicate grmi.Predicate) (string, error) { + return fmt.Sprintf(" and %s >= ?", predicate.ColumnName), nil + }, + Values: []interface{}{start}, + } + predicates = append(predicates, p) + } + end, exist := urlParameters["end"] + if exist { + end += " 23:59:59" + _, err = time.ParseInLocation(grmi.DateTimeOutFormat, start, utils.TimezoneLocation) + if err != nil { + err = grmi.NewBusinessError("结束日期格式错误") + return + } + p := grmi.Predicate{ + ColumnName: meta.ToyotaCalloff_OrderTime.ColumnName, + PredicateType: func(predicate grmi.Predicate) (string, error) { + return fmt.Sprintf(" and %s <= ?", predicate.ColumnName), nil + }, + Values: []interface{}{end}, + } + predicates = append(predicates, p) + } + dao := dal.NewToyotaCalloffDAO(session, user.PlantNr, user.UserId) + condition.Fill(urlParameters) + result, err := dao.SelectAndPaging(condition.Paging, predicates, condition.OrderByFields) + if err != nil { + return "", err + } + data := result.Records.([]model.ToyotaCalloff) + tabNameLi, err := tolnameDao.OriginSelect([]grmi.Predicate{ + baseMeta.TabColName_TabName.NewPredicate(grmi.Equal, "ToyotaCalloff"), + }, nil) + if err != nil { + return "", grmi.NewBusinessError("查询翻译数据失败, 错误:" + err.Error()) + } + tabNameMap := make(map[string]string) + for _, item := range tabNameLi { + tabNameMap[item.ColName] = item.TextLabel + } + stdefDao := baseDal.NewStdefDAO(session, user.UserId) + stdefLi, err := stdefDao.Select([]grmi.Predicate{ + baseMeta.Stdef_StatId.NewPredicate(grmi.Equal, "PLN_ToyotaCalloff-Parsed"), + }, nil) + if err != nil { + return "", grmi.NewBusinessError("查询翻译数据失败, 错误:" + err.Error()) + } + stdefMap := make(map[string]string) + for _, item := range stdefLi { + stdefMap[item.StdefTyp] = item.Bez + } + li := make([]interface{}, 0, len(data)) + for _, item := range data { + parsed, exist := stdefMap[strconv.Itoa(item.Parsed)] + if !exist { + parsed = strconv.Itoa(item.Parsed) + } + exportItem := model.ToyotaCalloffExcel{ + PlantNr: item.PlantNr, + DemandId: item.DemandId, + SupplierCode: item.SupplierCode, + ProjectId: item.ProjectId, + ProductFamilyId: item.ProductFamilyId, + TotalQty: item.TotalQty, + CheckSequence: item.CheckSequence, + Parsed: parsed, + OrderTime: item.OrderTime.Restore().Format(grmi.DateTimeOutFormat), + OrderShift: item.OrderShift, + } + li = append(li, exportItem) + } + head := make([]string, 0) + var exportItem model.ToyotaCalloffExcel + typeOf := reflect.TypeOf(exportItem) + for i := 0; i < typeOf.NumField(); i++ { + name, exist := tabNameMap[typeOf.Field(i).Name] + if !exist { + head = append(head, typeOf.Field(i).Name) + } else { + head = append(head, name,) + } + } + filepath, err = grmi.SaveExcelFile(li, head, "Sheet1", "顺引") + return +} \ No newline at end of file