Browse Source

Merge branch 'bug/2024-5-31' into debug

Roc 9 months ago
parent
commit
1d96e37c62

+ 2 - 12
controllers/base_from_calculate.go

@@ -592,12 +592,7 @@ func (this *CalculateController) BatchSave() {
 		sourName = "N数值移动平均计算"
 		edbInfo, err = models.AddCalculateNszydpjjs(&req, fromEdbInfo, edbCode, uniqueCode, sysUserId, sysUserName, formulaInt)
 	case utils.DATA_SOURCE_CALCULATE_HBZ:
-		var condition string
-		var pars []interface{}
-		condition += " AND edb_info_id =? "
-		pars = append(pars, fromEdbInfoId)
-		condition += " AND value <=0 "
-		checkCount, tmpErr := models.GetEdbDataCount(condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource)
+		checkCount, tmpErr := models.GetLteZeroEdbDataCount(fromEdbInfo.Source, fromEdbInfo.SubSource, fromEdbInfoId)
 		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
 			br.Msg = "判断环比值是否可计算失败"
 			br.ErrMsg = "判断环比值是否可计算失败,Err:" + tmpErr.Error()
@@ -1046,12 +1041,7 @@ func (this *CalculateController) BatchEdit() {
 		sourName = "N数值移动平均计算"
 		err = models.EditCalculateNszydpjjs(edbInfo, &req, fromEdbInfo, formulaInt, edbInfo.CalculateFormula)
 	case utils.DATA_SOURCE_CALCULATE_HBZ:
-		var condition string
-		var pars []interface{}
-		condition += " AND edb_info_id =? "
-		pars = append(pars, req.FromEdbInfoId)
-		condition += " AND value <=0 "
-		checkCount, tmpErr := models.GetEdbDataCount(condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource)
+		checkCount, tmpErr := models.GetLteZeroEdbDataCount(fromEdbInfo.Source, fromEdbInfo.SubSource, req.FromEdbInfoId)
 		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
 			br.Msg = "判断环比值是否可计算失败"
 			br.ErrMsg = "判断环比值是否可计算失败,Err:" + tmpErr.Error()

+ 9 - 15
models/edb_data_calculate_nszydbpjjs.go

@@ -225,25 +225,19 @@ func refreshAllCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, subSource,
 		removeDataTimeMap[v.DataTime] = 1
 	}
 
-	//计算来源数据
-	var fromCondition string
-	var fromPars []interface{}
-	fromCondition += " AND edb_info_id=? "
-	fromPars = append(fromPars, fromEdbInfo.EdbInfoId)
-	//if startDate != `` {
-	//	fromCondition += " AND data_time>=? "
-	//	fromPars = append(fromPars, startDate)
-	//}
-
-	//fmt.Println("fromPars:", fromPars)
-	fromDataList, err := GetEdbDataListAllV1ByTo(to, fromCondition, fromPars, fromEdbInfo.Source, fromEdbInfo.SubSource, 0)
+	// 获取来源数据
+	fromDataList, err := GetEdbDataListAll(fromEdbInfo.Source, fromEdbInfo.SubSource, FindEdbDataListAllCond{
+		EdbInfoId: fromEdbInfo.EdbInfoId,
+	}, 0)
 	if err != nil {
 		fmt.Println("from GetEdbDataListAll Err:" + err.Error())
 		return err
 	}
+	//fmt.Println("fromPars:", fromPars)
+	//fromDataList, err := GetEdbDataListAllV1ByTo(to, fromCondition, fromPars, fromEdbInfo.Source, fromEdbInfo.SubSource, 0)
 
 	var fromDateArr []string
-	fromDataMap := make(map[string]*EdbInfoSearchDataV1)
+	fromDataMap := make(map[string]*EdbInfoSearchData)
 	for _, v := range fromDataList {
 		fromDateArr = append(fromDateArr, v.DataTime)
 		fromDataMap[v.DataTime] = v
@@ -256,7 +250,7 @@ func refreshAllCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, subSource,
 	existAddDataMap := make(map[string]string)
 	for ak, av := range fromDateArr {
 		//处理第一个值
-		var valArr []string
+		var valArr []float64
 		if findItem, ok := fromDataMap[av]; ok {
 			valArr = append(valArr, findItem.Value)
 		} else {
@@ -281,7 +275,7 @@ func refreshAllCalculateNszydpjjs(to orm.TxOrmer, edbInfoId, source, subSource,
 		//var totalVal float64
 		totalVal := decimal.NewFromFloat(0.00)
 		for _, v := range valArr {
-			newDecimal, _ := decimal.NewFromString(v)
+			newDecimal := decimal.NewFromFloat(v)
 			totalVal = totalVal.Add(newDecimal)
 		}
 		af := totalVal //decimal.NewFromFloat(totalVal)

+ 56 - 8
models/edb_info.go

@@ -476,18 +476,66 @@ func ModifyEdbDataUpdateTime(edbInfoId int, dataUpdateTime, erDataUpdateDate str
 	return
 }
 
-// GetEdbDataCount 获取edb指标数据的数量; order:1升序,其余值为降序
-func GetEdbDataCount(condition string, pars []interface{}, source, subSource int) (count int, err error) {
+// GetLteZeroEdbDataCount
+// @Description: 获取小于等于0的数据数量
+// @author: Roc
+// @datetime 2024-05-31 10:44:39
+// @param source int
+// @param subSource int
+// @param edbInfoId int
+// @return count int
+// @return err error
+func GetLteZeroEdbDataCount(source, subSource, edbInfoId int) (count int, err error) {
+	if source == utils.DATA_SOURCE_BUSINESS {
+		return GetLteZeroEdbDataCountByMongo(source, subSource, edbInfoId)
+	}
+
+	return GetLteZeroEdbDataCountByMysql(source, subSource, edbInfoId)
+}
+
+// GetLteZeroEdbDataCountByMongo
+// @Description: 获取小于等于0的数据数量(从mongo)
+// @author: Roc
+// @datetime 2024-05-31 10:41:04
+// @param source int
+// @param subSource int
+// @param edbInfoId int
+// @return count int
+// @return err error
+func GetLteZeroEdbDataCountByMongo(source, subSource, edbInfoId int) (count int, err error) {
+	mogDataObj := mgo.EdbDataBusiness{}
+	// 构建查询条件
+	whereQuery := bson.M{
+		"edb_info_id": edbInfoId,
+		"value":       bson.M{"$lte": 0},
+	}
+	// 获数量数据
+	tmpCount, err := mogDataObj.GetCountDataList(whereQuery)
+	if err != nil {
+		return
+	}
+
+	count = int(tmpCount)
+
+	return
+}
+
+// GetLteZeroEdbDataCountByMysql
+// @Description: 获取小于等于0的数据数量(从mysql)
+// @author: Roc
+// @datetime 2024-05-31 10:29:19
+// @param source int
+// @param subSource int
+// @param edbInfoId int
+// @return count int
+// @return err error
+func GetLteZeroEdbDataCountByMysql(source, subSource, edbInfoId int) (count int, err error) {
 	o := orm.NewOrm()
 	sql := ``
 	tableName := GetEdbDataTableName(source, subSource)
-	sql = ` SELECT COUNT(1) AS count FROM %s WHERE 1=1 `
+	sql = ` SELECT COUNT(1) AS count FROM %s WHERE 1=1 AND edb_info_id =?  AND value <=0 `
 	sql = fmt.Sprintf(sql, tableName)
-
-	if condition != "" {
-		sql += condition
-	}
-	err = o.Raw(sql, pars).QueryRow(&count)
+	err = o.Raw(sql, edbInfoId).QueryRow(&count)
 	return
 }
 

+ 33 - 0
models/mgo/base_from_business_data.go

@@ -417,3 +417,36 @@ func (m *BaseFromBusinessData) GetLatestValue(whereParams, selectParam interface
 
 	return
 }
+
+// RemoveMany
+// @Description: 根据条件删除多条数据
+// @author: Roc
+// @receiver m
+// @datetime 2024-04-30 13:17:02
+// @param whereParams interface{}
+// @return err error
+func (m *BaseFromBusinessData) RemoveMany(whereParams interface{}) (err error) {
+	db := utils.MgoDataCli.Database(m.DataBaseName())
+	coll := db.Collection(m.CollectionName())
+
+	return m.RemoveManyByColl(coll, whereParams)
+}
+
+// RemoveManyByColl
+// @Description: 根据条件删除多条数据(外部传入集合)
+// @author: Roc
+// @receiver m
+// @datetime 2024-04-30 13:18:42
+// @param coll *qmgo.Collection
+// @param whereParams interface{}
+// @return err error
+func (m *BaseFromBusinessData) RemoveManyByColl(coll *qmgo.Collection, whereParams interface{}) (err error) {
+	ctx := context.TODO()
+	_, err = coll.RemoveAll(ctx, whereParams)
+	if err != nil {
+		fmt.Println("RemoveManyByColl:Err:" + err.Error())
+		return
+	}
+
+	return
+}

+ 2 - 12
services/base_from_calculate.go

@@ -252,12 +252,7 @@ func EdbCalculateBatchSave(req models.EdbInfoCalculateBatchSaveReq, lang string)
 		sourName = "N数值移动平均计算"
 		edbInfo, err = models.AddCalculateNszydpjjs(&req, fromEdbInfo, edbCode, uniqueCode, sysUserId, sysUserName, formulaInt)
 	case utils.DATA_SOURCE_CALCULATE_HBZ:
-		var condition string
-		var pars []interface{}
-		condition += " AND edb_info_id =? "
-		pars = append(pars, fromEdbInfoId)
-		condition += " AND value <=0 "
-		checkCount, tmpErr := models.GetEdbDataCount(condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource)
+		checkCount, tmpErr := models.GetLteZeroEdbDataCount(fromEdbInfo.Source, fromEdbInfo.SubSource, fromEdbInfoId)
 		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
 			err = fmt.Errorf("判断环比值是否可计算失败")
 			errMsg = "判断环比值是否可计算失败,Err:" + tmpErr.Error()
@@ -683,12 +678,7 @@ func EdbCalculateBatchEdit(req models.EdbInfoCalculateBatchEditReq) (edbInfo *mo
 		sourName = "N数值移动平均计算"
 		err = models.EditCalculateNszydpjjs(edbInfo, &req, fromEdbInfo, formulaInt, edbInfo.CalculateFormula)
 	case utils.DATA_SOURCE_CALCULATE_HBZ:
-		var condition string
-		var pars []interface{}
-		condition += " AND edb_info_id =? "
-		pars = append(pars, req.FromEdbInfoId)
-		condition += " AND value <=0 "
-		checkCount, tmpErr := models.GetEdbDataCount(condition, pars, fromEdbInfo.Source, fromEdbInfo.SubSource)
+		checkCount, tmpErr := models.GetLteZeroEdbDataCount(fromEdbInfo.Source, fromEdbInfo.SubSource, req.FromEdbInfoId)
 		if tmpErr != nil && tmpErr.Error() != utils.ErrNoRow() {
 			errMsg = "判断环比值是否可计算失败,Err:" + tmpErr.Error()
 			err = fmt.Errorf("判断环比值是否可计算失败")