package data // //import ( // "fmt" // "hongze/hongze_task/models/data_manage" // "hongze/hongze_task/utils" // "rdluck_tools/orm" // "strconv" // "strings" // "time" //) // //type EdbInfoCalculateLjzzy struct { // EdbInfoCalculateLjzzyId int `orm:"column(edb_info_calculate_ljzzy_id);pk"` // EdbInfoId int `description:"指标id"` // EdbCode string `description:"指标编码"` // FromEdbInfoId int `description:"计算指标id"` // FromEdbCode string `description:"计算指标编码"` // FromEdbName string `description:"计算指标名称"` // FromSource int `description:"计算指标来源"` // FromSourceName string `description:"计算指标来源名称"` // FromTag string `description:"来源指标标签"` // Sort int `description:"计算指标名称排序"` // CreateTime time.Time `description:"创建时间"` // ModifyTime time.Time `description:"修改时间"` //} // // ////刷新计算指标数据 //func RefreshDataFromCalculateLjzzy() (err error) { // defer func() { // if err != nil { // fmt.Println("RefreshDataFromCalculateLjzzy Err:" + err.Error()) // go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "RefreshDataFromCalculateLjzzy ErrMsg:"+err.Error(), utils.EmailSendToUsers) // } // }() // var condition string // var pars []interface{} // condition += " AND source=? " // pars = append(pars, utils.DATA_SOURCE_CALCULATE_NSZYDPJJS) // items, err := data_manage.GetEdbInfoByCondition(condition, pars) // if err != nil { // return err // } // // for _, v := range items { // year := time.Now().Year() // startDate := strconv.Itoa(year) + "-01" + "-01" // endDate := time.Now().Format(utils.FormatDate) // // fromEdbInfo, err := data_manage.GetEdbInfoById(v.FromEdbInfoId) // if err != nil { // br.Msg = "刷新失败" // br.Msg = "获取计算关联指标失败 Err:" + err.Error() + ";" // return // } // err = RefreshCalculateLjzzy(v.EdbInfoId, v.EdbCode, v.CalculateFormula, startDate, endDate, edbInfoIdBytes) // if err != nil { // return err // } // } // return err //} // // ////刷新累计值转月值数据 //func RefreshCalculateLjzzy(edbInfoId int, fromEdbInfo *EdbInfo, edbCode, startDate, endDate string) (err error) { // o := orm.NewOrm() // o.Using("data") // o.Begin() // defer func() { // if err != nil { // o.Rollback() // } else { // o.Commit() // } // }() // // if err != nil { // return // } // edbInfoIdStr := strconv.Itoa(edbInfoId) // //计算数据 // var condition string // var pars []interface{} // condition += " AND edb_info_id=? " // pars = append(pars, fromEdbInfo.EdbInfoId) // // if startDate != "" { // condition += " AND data_time>=? " // pars = append(pars, startDate) // } // if endDate != "" { // condition += " AND data_time<=? " // pars = append(pars, endDate) // } // // dataList, err := GetEdbDataListAll(condition, pars, fromEdbInfo.Source, 1) // if err != nil { // return err // } // // yearMap := make(map[int]map[int]*EdbInfoSearchData) // dataLen := len(dataList) // for i := 0; i < dataLen; i++ { // item := dataList[i] // //日其中获取年 // itemDate, err := time.Parse(utils.FormatDate, item.DataTime) // if err != nil { // return err // } // year := itemDate.Year() // month := int(itemDate.Month()) // if monthMap, yok := yearMap[year]; yok { // monthMap[month] = item // yearMap[year] = monthMap // } else { // monthMap = make(map[int]*EdbInfoSearchData) // monthMap[month] = item // yearMap[year] = monthMap // } // } // // addSql := ` INSERT INTO edb_data_calculate_ljzzy(edb_info_id,edb_code,data_time,value,create_time,modify_time,status,data_timestamp) values ` // nowStr := time.Now().Format(utils.FormatDateTime) // var isAdd bool // // for yk, yv := range yearMap { // if _, mok := yv[2]; !mok { // //fmt.Println(yk, yv, "continue") // continue // } // for i := 1; i <= 12; i++ { // fmt.Println(yk, i, yv[i]) // dataCurrentItem := yv[i] // var date string // var val float64 // if i == 1 || i == 2 { // dataTwoItem := yv[2] // if dataCurrentItem != nil && dataTwoItem != nil { // date = dataCurrentItem.DataTime // val = dataTwoItem.Value // } // } else { // dataPreItem := yv[i-1] // if dataCurrentItem != nil && dataPreItem != nil { // date = dataCurrentItem.DataTime // val = dataCurrentItem.Value - dataPreItem.Value // } // } // if date != "" { // //判断数据是否存在 // count, err := GetEdbDataCalculateLjzzyByCodeAndDate(edbCode, date) // if err != nil && err.Error() != utils.ErrNoRow() { // return err // } // if count <= 0 { // dataTime, _ := time.Parse(utils.FormatDate, date) // timestamp := dataTime.UnixNano() / 1e6 // timeStr := fmt.Sprintf("%d", timestamp) // // addSql += "(" // addSql += edbInfoIdStr + "," + "'" + edbCode + "'" + "," + "'" + date + "'" + "," + utils.SubFloatToString(val, 4) + "," + "'" + nowStr + "'" + // "," + "'" + nowStr + "'" + "," + "1" // addSql += "," + "'" + timeStr + "'" // addSql += ")," // isAdd = true // } else { // val = utils.FixFloat(val, 4) // err = ModifyEdbDataCalculateLjzzy(int64(edbInfoId), date, val) // if err != nil { // return err // } // } // } // } // } // if isAdd { // addSql = strings.TrimRight(addSql, ",") // _, err = o.Raw(addSql).Exec() // if err != nil { // return err // } // } // return //} // //type EdbInfoCalculateLjzzyDetail struct { // EdbInfoCalculateLjzzyId int `orm:"column(edb_info_calculate_ljzzy_id);pk"` // EdbInfoId int `description:"指标id"` // EdbCode string `description:"指标编码"` // FromEdbInfoId int `description:"计算指标id"` // FromEdbCode string `description:"计算指标编码"` // FromEdbName string `description:"计算指标名称"` // FromSource int `description:"计算指标来源"` // FromSourceName string `description:"计算指标来源名称"` // FromTag string `description:"来源指标标签"` // Sort int `description:"计算指标名称排序"` // CreateTime time.Time `description:"创建时间"` // ModifyTime time.Time `description:"修改时间"` // StartDate string `description:"开始日期"` // EndDate string `description:"结束日期"` //} // //func GetEdbInfoCalculateLjzzyDetailDetail(edbInfoId int) (item *EdbInfoCalculateLjzzyDetail, err error) { // o := orm.NewOrm() // o.Using("data") // sql := ` SELECT a.*,b.start_date,b.end_date FROM edb_info_calculate_ljzzy AS a // INNER JOIN edb_info AS b ON a.from_edb_info_id=b.edb_info_id // WHERE a.edb_info_id=? ` // err = o.Raw(sql, edbInfoId).QueryRow(&item) // return //} // //func GetEdbDataCalculateLjzzyByCodeAndDate(edbCode string, startDate string) (count int, err error) { // o := orm.NewOrm() // o.Using("data") // sql := ` SELECT COUNT(1) AS count FROM edb_info_calculate_ljzzy WHERE edb_code=? AND data_time=? ` // err = o.Raw(sql, edbCode, startDate).QueryRow(&count) // return //} // //func ModifyEdbDataCalculateLjzzy(edbInfoId int64, dataTime string, value float64) (err error) { // o := orm.NewOrm() // o.Using("data") // sql := ` UPDATE edb_info_calculate_ljzzy SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? ` // _, err = o.Raw(sql, value, edbInfoId, dataTime).Exec() // return //}