12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- package qua
- import (
- u "dataValidation/util"
- "fmt"
- "go.mongodb.org/mongo-driver/bson/primitive"
- qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
- )
- func BudgetFieldScore(tmp map[string]interface{}, score int64) map[string]interface{} {
- budget := qu.Float64All(tmp["budget"])
- bidamount := qu.Float64All(tmp["bidamount"])
- reason, desc := fmt.Sprintf("%d初始分", score), ""
- /*错误项*/
- if budget < 10.0 || budget > 20000000000.0 {
- return map[string]interface{}{
- "score": int64(0),
- "reason": "错误:大小",
- }
- }
- /*减分项
- "行业范围": 1,
- "间隔异常": 2
- */
- if bidamount > 0.0 && budget > 0.0 {
- proportion := bidamount / budget
- if (proportion >= 0.1 && proportion <= 0.3) || (proportion >= 3 && proportion <= 5) {
- desc = "间隔异常"
- reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Budget_Score[desc]))
- score -= qu.Int64All(u.Budget_Score[desc])
- }
- if proportion >= 0.001 && proportion < 0.1 {
- return map[string]interface{}{
- "score": int64(0),
- "reason": "错误:比例",
- }
- }
- }
- class := make(map[string]interface{}, 0)
- if topscopeclass, ok := tmp["topscopeclass"].(primitive.A); budget > 0.0 && ok && len(topscopeclass) > 0 {
- for _, v := range topscopeclass {
- value := qu.ObjToString(v)
- new_value := value[:len(value)-1]
- if class[new_value] == nil { //校验行业
- if !checkingClassMoney(budget, new_value) {
- desc = "行业范围"
- reason += "~" + desc + fmt.Sprintf("-%d", qu.Int64All(u.Budget_Score[desc]))
- score -= qu.Int64All(u.Budget_Score[desc])
- }
- class[new_value] = 1
- }
- }
- }
- return map[string]interface{}{
- "score": score,
- "reason": reason,
- }
- }
|