Pārlūkot izejas kodu

新增隆众历史数据获取

rdluck 4 gadi atpakaļ
vecāks
revīzija
2c4cdad2b5
3 mainītis faili ar 166 papildinājumiem un 14 dzēšanām
  1. 21 0
      models/data_source_longzhong.go
  2. 135 2
      services/data_source_longzhong.go
  3. 10 12
      services/task.go

+ 21 - 0
models/data_source_longzhong.go

@@ -188,3 +188,24 @@ func GetLongzhongDataMaxCount(classifyId int) (count int, err error) {
 	err = o.Raw(sql, classifyId).QueryRow(&count)
 	return
 }
+
+type LongzhonginfoList struct {
+	LongzhonginfoId int `orm:"column(longzhonginfo_id);pk"`
+	TradeCode       string
+	SecName         string
+	Frequency       string
+	ClassifyId      int
+	ClassifyName    string
+	Unit            string
+	IsNormal        string
+	LastModifyDate  string
+	Unitid          int
+}
+
+func GetLongzhonginfoList() (items []*LongzhonginfoList, err error) {
+	o := orm.NewOrm()
+	o.Using("edb")
+	sql := ` SELECT * FROM longzhonginfo `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 135 - 2
services/data_source_longzhong.go

@@ -88,7 +88,7 @@ func GetLongZhongTargetInfoByExcel() {
 	}
 }
 
-func GetLzProductList()(err error) {
+func GetLzProductList() (err error) {
 	utils.FileLog.Info("start GetLzProductList")
 	defer func() {
 		if err != nil {
@@ -219,7 +219,7 @@ func GetLzProductList()(err error) {
 	return
 }
 
-func GetLzProductDetail()(err error) {
+func GetLzProductDetail() (err error) {
 	utils.FileLog.Info("start GetLzProductDetail")
 	defer func() {
 		if err != nil {
@@ -334,6 +334,139 @@ func GetLzProductDetail()(err error) {
 	return
 }
 
+//获取历史隆众数据
+func GetHistoryLzProductDetail() (err error) {
+	utils.FileLog.Info("start GetHistoryLzProductDetail")
+	var msg string
+	defer func() {
+		if err != nil {
+			fmt.Println("Err:" + err.Error())
+		}
+		if msg != "" {
+			fmt.Println("msg:" + msg)
+		}
+	}()
+
+	infoList, err := models.GetLongzhonginfoList()
+	if err != nil {
+		msg = "获取指标列表失败,Err:" + err.Error()
+		return
+	}
+
+	for ik, iv := range infoList {
+		fmt.Println(ik, iv.SecName)
+		startDate := "2017-01-01" //time.Now().AddDate(0, 0, 0).Format(utils.FormatDate)
+		endDate := "2017-12-31"   //time.Now().AddDate(0, 0, 0).Format(utils.FormatDate)
+		time.Sleep(5 * time.Second)
+		pageSize := 30
+
+		postUrl := `http://info.oilchem.net/cust/interfacenew/getProductUnitDetailNew`
+		username := "hzmd"
+		password := "HZMD2020"
+
+		totalPage := 10
+		for i := 1; i <= totalPage; i++ {
+			fmt.Println("page:", i)
+			timestamp := fmt.Sprintf("%d", time.Now().Unix())
+			token := utils.MD5(username + timestamp + utils.MD5(password))
+
+			param := url.Values{}
+			param.Add("username", username)
+			param.Add("password", password)
+			param.Add("timestamp", timestamp)
+			param.Add("token", token)
+			param.Add("id", strconv.Itoa(iv.Unitid))
+			param.Add("startDate", startDate)
+			param.Add("endDate", endDate)
+			param.Add("pagesize", strconv.Itoa(pageSize))
+			param.Add("page", strconv.Itoa(i))
+			utils.FileLog.Info("%s", param.Encode())
+			body, err := http.Post(postUrl, param.Encode())
+			if err != nil {
+				fmt.Println("err:", err.Error())
+				return err
+			}
+			utils.FileLog.Info("%s", string(body))
+			resp := new(models.LzProductInfoDetailResp)
+			err = json.Unmarshal(body, &resp)
+			if err != nil {
+				fmt.Println("Unmarshal Err:" + err.Error())
+				fmt.Println("body:", string(body))
+				return err
+			}
+			if resp.Code != "1" {
+				fmt.Println("获取信息失败")
+				err = errors.New("Code:" + resp.Code + ";Msg:" + resp.Msg)
+				return err
+			}
+			if i == totalPage && resp.Pagesize >= pageSize {
+				totalPage = totalPage + 5
+			}
+			for k, v := range resp.Data {
+				fmt.Println(k, v.UnitId, v.ProCnName)
+				target, err := models.GetLongzhonginfoByUnitId(v.ProCnName, v.UnitId)
+				if err != nil {
+					if err.Error() != utils.ErrNoRow() {
+						fmt.Println("获取target失败,err:" + err.Error())
+						continue
+					}
+					fmt.Println("err:" + err.Error())
+					return err
+				}
+				if target == nil {
+					fmt.Println("target is empty:"+v.ProCnName, v.UnitId)
+					continue
+				}
+
+				count, err := models.GetLongzhongdataCount(target.LongzhonginfoId, v.DataTime)
+				if err != nil {
+					fmt.Println("GetLongzhongdataCount Err:" + err.Error())
+					return err
+				}
+				if count > 0 {
+					fmt.Println("数据已存在:", iv.Unitid, iv.SecName, v.UnitValue, v.DataTime)
+					/*lzdetail := new(models.Longzhongdata)
+					lzdetail.CreateTime = time.Now()
+					lzdetail.ModifyTime = time.Now()
+					lzdetail.TradeCode = target.TradeCode
+					lzdetail.LongzhonginfoId = target.LongzhonginfoId
+					lzdetail.Dt = v.DataTime
+					lzdetail.Close = v.UnitValue
+					lzdetail.UnitDesc = v.UnitDesc
+					lzdetail.UpdTime = v.UpdTime
+					err = models.ModifyLongzhongdata(lzdetail)
+					if err != nil {
+						fmt.Println("ModifyLongzhongdata Err:" + err.Error())
+						return err
+					}*/
+				} else {
+					lzdetail := new(models.Longzhongdata)
+					lzdetail.CreateTime = time.Now()
+					lzdetail.ModifyTime = time.Now()
+					lzdetail.TradeCode = target.TradeCode
+					lzdetail.LongzhonginfoId = target.LongzhonginfoId
+					lzdetail.Dt = v.DataTime
+					lzdetail.Close = v.UnitValue
+					lzdetail.UnitDesc = v.UnitDesc
+					lzdetail.UpdTime = v.UpdTime
+					err = models.AddLongzhongdata(lzdetail)
+					if err != nil {
+						fmt.Println("AddLongzhongdata Err:" + err.Error())
+						return err
+					}
+				}
+			}
+			if resp.Pagesize < pageSize || len(resp.Data) == 0 {
+				return err
+			}
+			time.Sleep(2 * time.Second)
+		}
+		fmt.Println("sleep", iv.SecName)
+		time.Sleep(10 * time.Second)
+	}
+	return
+}
+
 func GetLzPrice() {
 	fmt.Println("start")
 	/*getUrl:=`https://openapi.oilchem.net/price/getProduct?password=HZMD2020&type=guoji&username=hzmd`

+ 10 - 12
services/task.go

@@ -2,28 +2,26 @@ package services
 
 import (
 	"fmt"
-	"github.com/astaxie/beego/toolbox"
 )
 
 func Task() {
 	fmt.Println("task start")
 	//发送邮件
-	sendEmail := toolbox.NewTask("sendEmail", "0 0 12 * * 0 ", SendEmail)
-	toolbox.AddTask("sendEmail", sendEmail)
+	//sendEmail := toolbox.NewTask("sendEmail", "0 0 12 * * 0 ", SendEmail)
+	//toolbox.AddTask("sendEmail", sendEmail)
 
-	oneMinute := toolbox.NewTask("oneMinute", "0 */1 7-23 * * * ", OneMinute)
-	toolbox.AddTask("oneMinute", oneMinute)
+	//oneMinute := toolbox.NewTask("oneMinute", "0 */1 7-23 * * * ", OneMinute)
+	//toolbox.AddTask("oneMinute", oneMinute)
 
 	//隆众指标获取
-	getLzProductList := toolbox.NewTask("getLzProductList", "0 0 11-19/1 * * * ", GetLzProductList)
-	toolbox.AddTask("getLzProductList", getLzProductList)
+	//getLzProductList := toolbox.NewTask("getLzProductList", "0 0 11-19/1 * * * ", GetLzProductList)
+	//toolbox.AddTask("getLzProductList", getLzProductList)
 	//隆众指标数据获取
-	getLzProductDetail := toolbox.NewTask("getLzProductDetail", "0 5 11-19/1 * * * ", GetLzProductDetail)
-	toolbox.AddTask("getLzProductDetail", getLzProductDetail)
+	//getLzProductDetail := toolbox.NewTask("getLzProductDetail", "0 5 11-19/1 * * * ", GetLzProductDetail)
+	//toolbox.AddTask("getLzProductDetail", getLzProductDetail)
 
-	toolbox.StartTask()
-
-	//GetLzProductDetail()
+	//toolbox.StartTask()
+	GetHistoryLzProductDetail()
 	//GetLzPrice()
 	//GetLzProductDetail()
 	//LzExportExcel()