Ver código fonte

tmr 检验数据

bsj 3 anos atrás
pai
commit
bedfdeabe7
4 arquivos alterados com 207 adições e 26 exclusões
  1. BIN
      __debug_bin.exe
  2. 190 25
      routers/api/db.go
  3. 1 1
      routers/api/udsync.go
  4. 16 0
      routers/restful/sql_utils.go

BIN
__debug_bin.exe


+ 190 - 25
routers/api/db.go

@@ -3695,42 +3695,207 @@ func AddFtdry(c *gin.Context) {
 }
 }
 
 
 func CheckDates(c *gin.Context) {
 func CheckDates(c *gin.Context) {
-	appG := app.Gin{C: c}
-	dataByte, _ := ioutil.ReadAll(c.Request.Body)
-	fsion := gofasion.NewFasion(string(dataByte))
-	dataList := fsion.Get("data").Array()
+	// appG := app.Gin{C: c}
+	// dataByte, _ := ioutil.ReadAll(c.Request.Body)
+	// fsion := gofasion.NewFasion(string(dataByte))
+	// dataList := fsion.Get("data").Array()
 
 
 	tx := restful.Engine.NewSession()
 	tx := restful.Engine.NewSession()
-	reqList := make([]map[string]interface{}, 0)
+	defer tx.Close()
+	// reqList := make([]map[string]interface{}, 0)
+
+	// for _, fsion2 := range dataList {
+	// 	s_params := make([]interface{}, 0)
+
+	// 	sqlnamestr := fsion2.Get("sqlname").ValueStr()
+	// 	sql, p := restful.GetSqlByNameDBT(sqlnamestr, tx)
+
+	// 	parammaps := fsion2.Get("parammaps")
+	// 	paramslist := strings.Split(p, ",")
+	// 	if len(paramslist) > 0 && p != "" {
+	// 		for _, value := range paramslist {
+	// 			s_params = append(s_params, parammaps.Get(strings.Trim(value, " ")).ValueStr())
+	// 		}
+	// 	}
+
+	// 	queryData, err := tx.SQL(sql, s_params...).QueryString()
+	// 	if err != nil {
+	// 		logging.Error("CheckDates  err: ", err)
+	// 		appG.Response(http.StatusInternalServerError, e.ERROR, err)
+	// 		return
+	// 	}
+
+	// 	reqData := make(map[string]interface{}, 0)
+	// 	for _, item := range queryData {
+	// 		reqData["msg"] = item
+	// 	}
+	// 	reqData["sqlname"] = sqlnamestr
+	// 	reqList = append(reqList, reqData)
+	// }
 
 
-	for _, fsion2 := range dataList {
-		s_params := make([]interface{}, 0)
+	appG := app.Gin{C: c}
+	dataByte, _ := ioutil.ReadAll(c.Request.Body)
+	tempval_ := make(map[string]interface{})
+	tempCommon := make(map[string]interface{})
+	tempval := make([]map[string]interface{}, 0)
+	err := json.Unmarshal(dataByte, &tempval_)
+	logging.Info("ExecDataByConfig ", c.Keys, c.Request.RemoteAddr, tempval_["common"], tempval_["data"])
+	// fmt.Println("ExecDataByConfig ", c.Keys, c.Request.RemoteAddr, tempval_["common"], tempval_["data"])
+	if err != nil {
+	} else {
+		if v, ok := tempval_["common"].(map[string]interface{}); ok {
+			tempCommon = v
+		}
 
 
-		sqlnamestr := fsion2.Get("sqlname").ValueStr()
-		sql, p := restful.GetSqlByNameDBT(sqlnamestr, tx)
+		if v, ok := tempval_["data"].([]interface{}); ok {
+			for _, Tvalue := range v {
+				if v1, ok := Tvalue.(map[string]interface{}); ok {
+					tempval = append(tempval, v1)
+				}
+			}
+		}
 
 
-		parammaps := fsion2.Get("parammaps")
-		paramslist := strings.Split(p, ",")
-		if len(paramslist) > 0 && p != "" {
-			for _, value := range paramslist {
-				s_params = append(s_params, parammaps.Get(strings.Trim(value, " ")).ValueStr())
+		if err == nil {
+			if tempv, exists := c.Get("jwt_username"); exists {
+				tempCommon["jwt_username"] = tempv.(string)
+			}
+			for _, paramvalue := range tempval {
+				if _, ok := paramvalue["resultname"]; !ok {
+					paramvalue["resultname"] = paramvalue["name"]
+				}
+				_, err := ExecDataQuery(paramvalue, tempCommon, tempval, nil, nil, tx)
+				if err != nil {
+					logging.Error("ExecDataParam error:", err)
+
+				}
+				// reqData := make(map[string]interface{}, 0)
+				// for _, item := range execDataList {
+				// fmt.Println(execDataList)
+				// }
+				// reqList = append(reqList, reqData)
+			}
+			if err == nil {
+				appG.Response(http.StatusOK, e.SUCCESS, tempval)
+			} else {
+				msg := geterrmsg(err.Error())
+				appG.Response(http.StatusInternalServerError, e.ERROR, msg)
 			}
 			}
 		}
 		}
+	}
+	if err != nil {
+		msg := geterrmsg(err.Error())
+		appG.Response(http.StatusOK, e.ERROR, msg)
+
+	}
+}
+
+func ExecDataQuery(fasion map[string]interface{}, CommonParamMap map[string]interface{}, ParamMap []map[string]interface{}, ParentParamMap map[string]interface{}, sameParamMap []map[string]interface{}, tx *xorm.Session) (interface{}, error) {
+	sqlname := fasion["name"].(string)
+	sqltype := "" //v  校验/s1 查询/sm 查询/e  执行
+	if v, ok := fasion["type"]; ok {
+		sqltype = v.(string)
+	}
+	sql := ""
+	p := ""
+	s_params := make([]interface{}, 0)
+	if sqltype != "" {
+		sql, p = restful.GetSqlByName(sqlname, tx)
+		//sqlApi, _ := models.GetApisqlByName(sqlname)
+		if v, ok := fasion["parammaps"].(map[string]interface{}); ok {
+			paramslist := strings.Split(p, ",")
+			if len(paramslist) > 0 && p != "" {
+				for _, value := range paramslist {
+					ss := ""
+					if strings.ToLower(strings.Trim(value, " ")) == "snowid" {
+						ids, err := setting.SnowIds.NextId()
+						if err != nil {
+							ids = time.Now().UnixNano()
+							logging.Info("create SnowIds err", err)
+						}
+						s_params = append(s_params, ids)
+					} else {
+						if ss == "" && CommonParamMap != nil {
+							if valuestring, ok := v[strings.Trim(value, " ")].(string); ok {
+								ss = valuestring
+								tempstrb := strings.IndexAny(valuestring, "@")
+								tempstre := strings.IndexAny(valuestring, ".")
+								if (tempstre > tempstrb) && (strings.ToLower(valuestring[tempstrb+1:tempstre]) == "common") {
+									if CommonParamMap[valuestring[tempstre+1:]] != nil {
+										ss = CommonParamMap[valuestring[tempstre+1:]].(string)
+									}
+								} else {
+									ss = ""
+								}
+							}
+
+						}
+
+						if ss == "" && ParentParamMap != nil {
+							ss = getParamValue_(v, value, ParentParamMap)
+						}
+						if ss == "" && sameParamMap != nil {
+							ss = getParamValue(v, value, sameParamMap)
+						}
+						if ss == "" && ParamMap != nil {
+							ss = getParamValue(v, value, ParamMap)
+						}
+						s_params = append(s_params, ss)
+					}
 
 
-		queryData, err := tx.SQL(sql, s_params...).QueryString()
+				}
+			}
+
+		}
+	}
+	if sql == "" {
+		sqltype = ""
+	}
+	if sql != "" {
+		tempValParam, err := restful.QueryByMap(sql, 0, 1, s_params)
 		if err != nil {
 		if err != nil {
-			logging.Error("CheckDates  err: ", err)
-			appG.Response(http.StatusInternalServerError, e.ERROR, err)
-			return
+			return nil, err
 		}
 		}
-
-		reqData := make(map[string]interface{}, 0)
-		for _, item := range queryData {
-			reqData["msg"] = item
+		// fmt.Println(tempValParam)
+		return tempValParam, nil
+	} else {
+		if tempValParam, ok := fasion["resultmaps"].(map[string]interface{}); ok {
+			err := ExitsChildrenQuery(fasion, tempValParam, ParamMap, CommonParamMap, tx)
+			if err != nil {
+				return nil, err
+			}
+			return nil, err
 		}
 		}
-		reqData["sqlname"] = sqlnamestr
-		reqList = append(reqList, reqData)
 	}
 	}
+	// if tempValParam.(map[string]interface{})["list"].([]map[string]interface{})[0]["vmsg"] != "" {
+	// 	return nil, errors.New(tempValParam.(map[string]interface{})["list"].([]map[string]interface{})[0]["vmsg"].(string))
+	// }
 
 
-	appG.Response(http.StatusOK, e.SUCCESS, reqList)
+	return nil, nil
+}
+
+func ExitsChildrenQuery(fasion map[string]interface{}, tempValParam interface{}, ParamMap []map[string]interface{}, commonParam map[string]interface{}, tx *xorm.Session) error {
+	var err error
+	subarray, ok := fasion["children"]
+
+	if ok {
+		for _, v := range tempValParam.(map[string]interface{})["list"].([]interface{}) { //遍历父集有多少行数据
+			tempVal_arrary := make([]map[string]interface{}, 0)
+			for _, subarrayvalue := range subarray.([]interface{}) { //遍历所有执行命令
+				tempVal_ := make(map[string]interface{})
+				if _, ok := subarrayvalue.(map[string]interface{})["resultname"]; !ok {
+					tempVal_["resultname"] = subarrayvalue.(map[string]interface{})["name"]
+				} else {
+					tempVal_["resultname"] = subarrayvalue.(map[string]interface{})["resultname"]
+				}
+				tempVal_["resultmaps"], err = ExecDataQuery(subarrayvalue.(map[string]interface{}), commonParam, ParamMap, v.(map[string]interface{}), tempVal_arrary, tx) //递归调用执行
+
+				if err != nil {
+					return err
+				}
+				tempVal_arrary = append(tempVal_arrary, tempVal_)
+			}
+			v.(map[string]interface{})["children"] = tempVal_arrary
+		}
+	}
+	return nil
 }
 }

+ 1 - 1
routers/api/udsync.go

@@ -495,7 +495,7 @@ func UDUploaddiliverdata(token, pastureid string) {
 	sqlstr := `SELECT
 	sqlstr := `SELECT
 	IFNULL(ft.id,d2.feedtempletid ) recipeId, 
 	IFNULL(ft.id,d2.feedtempletid ) recipeId, 
 	IFNULL(d.templetName,d2.feedtempletName ) recipeName, 
 	IFNULL(d.templetName,d2.feedtempletName ) recipeName, 
-	date_format(d.mydate,'%Y-%m-%d') as dropDate,d.SORT as tmrNo,
+	date_format(d.mydate,'%Y-%m-%d') as dropDate,ifnull((select sort from downloadedplan where pid=d.pid and lpplanType !=d.lpplanType and mydate=d.mydate),d.sort) as tmrNo,
 	d.Times as dropShift,b.bcode as penId,d2.Fname as penName,fp.CCOUNT as cowCount, d2.SORT as feedingNo, d2.LWEIGHT as expWeight,
 	d.Times as dropShift,b.bcode as penId,d2.Fname as penName,fp.CCOUNT as cowCount, d2.SORT as feedingNo, d2.LWEIGHT as expWeight,
 	d2.ActualWeightMinus as actualWeight, ifnull(date_format(timestamp(d2.InTime,CONCAT('-',d2.processTime)),'%Y-%m-%d %H:%i:%s'),"") as startTime,
 	d2.ActualWeightMinus as actualWeight, ifnull(date_format(timestamp(d2.InTime,CONCAT('-',d2.processTime)),'%Y-%m-%d %H:%i:%s'),"") as startTime,
 	date_format(d2.InTime,'%Y-%m-%d %H:%i:%s') as endTime,ifnull((SELECT dr.driver FROM dutyrecord dr 
 	date_format(d2.InTime,'%Y-%m-%d %H:%i:%s') as endTime,ifnull((SELECT dr.driver FROM dutyrecord dr 

+ 16 - 0
routers/restful/sql_utils.go

@@ -983,3 +983,19 @@ func getValue(value interface{}, CT string) interface{} {
 	}
 	}
 	return v
 	return v
 }
 }
+
+func ExecQueryList(sqlstr string, params []interface{}) (interface{}, error) {
+	if err := sqlCheckParam(sqlstr); err != nil {
+		return 0, err
+	}
+
+	rows, err := Engine.SQL(sqlstr, params...).QueryString()
+	if err != nil {
+		return nil, err
+	}
+	data := make(map[string]interface{})
+	for _, item := range rows {
+		data["result"] = item
+	}
+	return data, nil
+}