|
@@ -124,6 +124,82 @@ func AddCalculate(edbInfoIdArr []*EdbInfo, edbInfoId int, edbCode, formulaStr st
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+func AddCalculateInfo(req *EdbInfoCalculateSaveReq, calculateMappingList []*EdbInfoCalculateMapping, edbInfoList []*EdbInfo, edbCode, uniqueCode string, edbInfoIdBytes []string) (edbInfo *EdbInfo, err error) {
|
|
|
+
|
|
|
+ o := orm.NewOrm()
|
|
|
+ to, err := o.Begin()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ defer func() {
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("AddCalculateHcz,Err:" + err.Error())
|
|
|
+ _ = to.Rollback()
|
|
|
+ } else {
|
|
|
+ _ = to.Commit()
|
|
|
+ }
|
|
|
+ }()
|
|
|
+
|
|
|
+ edbInfo = &EdbInfo{
|
|
|
+ EdbInfoId: 0,
|
|
|
+ SourceName: "指标运算",
|
|
|
+ Source: utils.DATA_SOURCE_CALCULATE,
|
|
|
+ EdbCode: edbCode,
|
|
|
+ EdbName: req.EdbName,
|
|
|
+ EdbNameSource: req.EdbName,
|
|
|
+ Frequency: req.Frequency,
|
|
|
+ Unit: req.Unit,
|
|
|
+ StartDate: "",
|
|
|
+ EndDate: "",
|
|
|
+ ClassifyId: req.ClassifyId,
|
|
|
+ SysUserId: req.AdminId,
|
|
|
+ SysUserRealName: req.AdminName,
|
|
|
+ UniqueCode: uniqueCode,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ MinValue: 0,
|
|
|
+ MaxValue: 0,
|
|
|
+ CalculateFormula: req.CalculateFormula,
|
|
|
+ EdbType: 2,
|
|
|
+ Sort: 0,
|
|
|
+ MoveType: 0,
|
|
|
+ MoveFrequency: "",
|
|
|
+ NoUpdate: 0,
|
|
|
+ ServerUrl: "",
|
|
|
+ EdbInfoType: 0,
|
|
|
+ EdbNameEn: "",
|
|
|
+ UnitEn: "",
|
|
|
+ LatestDate: "",
|
|
|
+ LatestValue: 0,
|
|
|
+ ChartImage: "",
|
|
|
+ }
|
|
|
+ lastId, err := to.Insert(edbInfo)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ edbInfo.EdbInfoId = int(lastId)
|
|
|
+
|
|
|
+ {
|
|
|
+
|
|
|
+ for _, v := range calculateMappingList {
|
|
|
+ v.EdbCode = edbCode
|
|
|
+ v.EdbInfoId = edbInfo.EdbInfoId
|
|
|
+ }
|
|
|
+ if len(calculateMappingList) > 0 {
|
|
|
+ _, err = to.InsertMulti(len(calculateMappingList), calculateMappingList)
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ err = refreshAllCalculate(to, edbInfoList, edbInfo.EdbInfoId, edbInfo.Source, edbInfo.EdbCode, edbInfo.CalculateFormula, "", "", edbInfoIdBytes)
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
func GetCalculateEdbInfo(edbInfoId int) (from_edb_info_id string, err error) {
|
|
|
o := orm.NewOrm()
|
|
@@ -176,6 +252,15 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode
|
|
|
}
|
|
|
}()
|
|
|
fmt.Println(startDate, endDate)
|
|
|
+
|
|
|
+
|
|
|
+ err = refreshAllCalculate(to, edbInfoIdArr, edbInfoId, source, edbCode, formulaStr, startDate, endDate, edbInfoIdBytes)
|
|
|
+
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func refreshAllCalculate(to orm.TxOrmer, edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode, formulaStr, startDate, endDate string, edbInfoIdBytes []string) (err error) {
|
|
|
saveDataMap := make(map[string]map[int]float64)
|
|
|
for _, v := range edbInfoIdArr {
|
|
|
var condition string
|
|
@@ -221,7 +306,7 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode
|
|
|
dataTableName := GetEdbDataTableName(source)
|
|
|
sql := `SELECT * FROM %s WHERE edb_info_id=? `
|
|
|
sql = fmt.Sprintf(sql, dataTableName)
|
|
|
- _, err = o.Raw(sql, edbInfoId).QueryRows(&dataList)
|
|
|
+ _, err = to.Raw(sql, edbInfoId).QueryRows(&dataList)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
@@ -275,7 +360,7 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode
|
|
|
if existStr != saveValue {
|
|
|
sql := ` UPDATE %s SET value=?,modify_time=NOW() WHERE edb_info_id=? AND data_time=? `
|
|
|
sql = fmt.Sprintf(sql, dataTableName)
|
|
|
- _, err = o.Raw(sql, saveValue, edbInfoId, sk).Exec()
|
|
|
+ _, err = to.Raw(sql, saveValue, edbInfoId, sk).Exec()
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
@@ -290,7 +375,7 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode
|
|
|
|
|
|
if isAdd {
|
|
|
addSql = strings.TrimRight(addSql, ",")
|
|
|
- _, err = o.Raw(addSql).Exec()
|
|
|
+ _, err = to.Raw(addSql).Exec()
|
|
|
if err != nil {
|
|
|
fmt.Println("RefreshAllCalculate add Err", err.Error())
|
|
|
return
|
|
@@ -304,7 +389,7 @@ func RefreshAllCalculate(edbInfoIdArr []*EdbInfo, edbInfoId, source int, edbCode
|
|
|
tableName := GetEdbDataTableName(source)
|
|
|
sql := fmt.Sprintf(` DELETE FROM %s WHERE edb_info_id = ? and data_time in (%s) `, tableName, removeDateStr)
|
|
|
|
|
|
- _, err = o.Raw(sql, edbInfoId).Exec()
|
|
|
+ _, err = to.Raw(sql, edbInfoId).Exec()
|
|
|
if err != nil {
|
|
|
err = fmt.Errorf("删除计算失败的计算指标数据失败,Err:" + err.Error())
|
|
|
return
|