bsj 3 éve
szülő
commit
bedfdeabe7
4 módosított fájl, 207 hozzáadás és 26 törlés
  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) {
-	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()
-	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 {
-			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
 	IFNULL(ft.id,d2.feedtempletid ) recipeId, 
 	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,
 	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 

+ 16 - 0
routers/restful/sql_utils.go

@@ -983,3 +983,19 @@ func getValue(value interface{}, CT string) interface{} {
 	}
 	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
+}