|  | @@ -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
 | 
	
		
			
				|  |  |  }
 |