|
@@ -125,7 +125,7 @@ func AddCalculate(edbInfoIdArr []*EdbInfo, edbInfoId int, edbCode, formulaStr st
|
|
|
}
|
|
|
|
|
|
|
|
|
-func AddCalculateInfo(req *EdbInfoCalculateSaveReq, calculateMappingList []*EdbInfoCalculateMapping, edbInfoList []*EdbInfo, edbCode, uniqueCode string, edbInfoIdBytes []string) (edbInfo *EdbInfo, err error) {
|
|
|
+func AddCalculateInfo(req EdbInfoCalculateSaveReq, calculateMappingList []*EdbInfoCalculateMapping, edbInfoList []*EdbInfo, edbCode, uniqueCode string, edbInfoIdBytes []string) (edbInfo *EdbInfo, err error) {
|
|
|
|
|
|
o := orm.NewOrm()
|
|
|
to, err := o.Begin()
|
|
@@ -200,6 +200,107 @@ func AddCalculateInfo(req *EdbInfoCalculateSaveReq, calculateMappingList []*EdbI
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+func EditCalculateInfo(edbInfo *EdbInfo, req EdbInfoCalculateSaveReq, formulaMap map[string]string, edbInfoIdBytes []string, needCalculate bool) (err error, errMsg string) {
|
|
|
+ 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.EdbName = req.EdbName
|
|
|
+ edbInfo.EdbNameSource = req.EdbName
|
|
|
+ edbInfo.Frequency = req.Frequency
|
|
|
+ edbInfo.Unit = req.Unit
|
|
|
+ edbInfo.ClassifyId = req.ClassifyId
|
|
|
+ edbInfo.CalculateFormula = req.CalculateFormula
|
|
|
+ edbInfo.ModifyTime = time.Now()
|
|
|
+ _, err = to.Update(edbInfo, "EdbName", "EdbNameSource", "Frequency", "Unit", "ClassifyId", "CalculateFormula", "ModifyTime")
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if needCalculate {
|
|
|
+
|
|
|
+ sql := `DELETE FROM edb_data_calculate WHERE edb_info_id=?`
|
|
|
+ _, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ sql = `DELETE FROM edb_info_calculate_mapping WHERE edb_info_id=?`
|
|
|
+ _, err = to.Raw(sql, edbInfo.EdbInfoId).Exec()
|
|
|
+ if err != nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ edbInfoList := make([]*EdbInfo, 0)
|
|
|
+
|
|
|
+ calculateMappingList := make([]*EdbInfoCalculateMapping, 0)
|
|
|
+ for k, v := range req.EdbInfoIdArr {
|
|
|
+ fromEdbInfo, tmpErr := GetEdbInfoById(v.EdbInfoId)
|
|
|
+ if tmpErr != nil {
|
|
|
+ err = tmpErr
|
|
|
+ return
|
|
|
+ }
|
|
|
+ edbInfoList = append(edbInfoList, fromEdbInfo)
|
|
|
+
|
|
|
+
|
|
|
+ {
|
|
|
+ calculateMappingItem := &EdbInfoCalculateMapping{
|
|
|
+ EdbInfoCalculateMappingId: 0,
|
|
|
+ EdbInfoId: req.EdbInfoId,
|
|
|
+ Source: edbInfo.Source,
|
|
|
+ SourceName: edbInfo.SourceName,
|
|
|
+ EdbCode: edbInfo.EdbCode,
|
|
|
+ FromEdbInfoId: fromEdbInfo.EdbInfoId,
|
|
|
+ FromEdbCode: fromEdbInfo.EdbCode,
|
|
|
+ FromEdbName: fromEdbInfo.EdbName,
|
|
|
+ FromSource: fromEdbInfo.Source,
|
|
|
+ FromSourceName: fromEdbInfo.SourceName,
|
|
|
+ FromTag: v.FromTag,
|
|
|
+ Sort: k + 1,
|
|
|
+ CreateTime: time.Now(),
|
|
|
+ ModifyTime: time.Now(),
|
|
|
+ }
|
|
|
+ calculateMappingList = append(calculateMappingList, calculateMappingItem)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ ok, _ := CheckFormula2(edbInfoList, formulaMap, req.CalculateFormula, edbInfoIdBytes)
|
|
|
+ if !ok {
|
|
|
+ errMsg = "生成计算指标失败,请使用正确的计算公式"
|
|
|
+ err = errors.New(errMsg)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ {
|
|
|
+ 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()
|