Browse Source

新增隆众数据

rdluck 4 years ago
parent
commit
9010895cd2

+ 143 - 5
models/data_source_longzhong.go

@@ -9,10 +9,12 @@ type Longzhongdata struct {
 	LongzhongdataId int `orm:"column(longzhongdata_id);pk"`
 	LongzhonginfoId int
 	TradeCode       string
-	Dt              time.Time
+	Dt              string
 	Close           float64
 	CreateTime      time.Time
 	ModifyTime      time.Time
+	UnitDesc        string
+	UpdTime         string
 }
 
 type Longzhonginfo struct {
@@ -25,11 +27,17 @@ type Longzhonginfo struct {
 	Unit            string
 	CreateTime      time.Time
 	Remark          string
+	IsNormal        string
+	LastModifyDate  string
+	Unitid          int64
+	TempId          int64
+	TempName        string
+	ModifyTime      time.Time
 }
 
 func GetLongzhonginfoBySecName(secName string) (item *Longzhongdata, err error) {
 	o := orm.NewOrm()
-	o.Using("rddp")
+	o.Using("edb")
 	sql := `SELECT * FROM longzhonginfo WHERE sec_name=? `
 	err = o.Raw(sql, secName).QueryRow(&item)
 	return
@@ -40,13 +48,143 @@ func GetLongzhongdataCount(longzhonginfoId int, dt string) (count int, err error
 	o := orm.NewOrm()
 	o.Using("edb")
 	sql := `SELECT COUNT(1) AS count FROM longzhongdata WHERE longzhonginfo_id=? AND dt=? `
-	err = o.Raw(sql, longzhonginfoId, dt).QueryRow(count)
+	err = o.Raw(sql, longzhonginfoId, dt).QueryRow(&count)
+	return
+}
+
+func AddLongzhongdata(item *Longzhongdata) (err error) {
+	o := orm.NewOrm()
+	o.Using("edb")
+	_, err = o.Insert(item)
 	return
 }
 
-func AddLongzhongdata(item *Longzhongdata) (newId int64, err error) {
+func ModifyLongzhongdata(item *Longzhongdata) (err error) {
 	o := orm.NewOrm()
-	o.Using("rddp")
+	o.Using("edb")
+	sql := ` UPDATE  longzhongdata
+			SET
+			  close = ?,
+			  modify_time= NOW(),
+			  unit_desc= ?,
+			  upd_time = ?
+			WHERE longzhonginfo_id = ? AND dt=?
+			 `
+	_, err = o.Raw(sql, item.Close, item.UnitDesc, item.UpdTime, item.LongzhonginfoId, item.Dt).Exec()
+	return
+}
+
+func AddLongzhonginfo(item *Longzhonginfo) (newId int64, err error) {
+	o := orm.NewOrm()
+	o.Using("edb")
 	newId, err = o.Insert(item)
 	return
 }
+
+func ModifyLongzhonginfo(item *Longzhonginfo) (err error) {
+	o := orm.NewOrm()
+	o.Using("edb")
+	sql := `UPDATE  longzhonginfo
+		SET
+		  sec_name = ?,
+		  unit = ?,
+		  frequency = ?,
+		  classify_id = ?,
+		  classify_name = ?,
+		  remark = ?,
+		  last_modify_date = ?,
+		  temp_id = ?,
+		  temp_name = ?,
+		  is_normal = ?,
+		  modify_time=NOW()
+		WHERE unitid = ? `
+	_, err = o.Raw(sql, item.SecName, item.Unit, item.Frequency, item.ClassifyId, item.ClassifyName, item.Remark, item.LastModifyDate, item.TempId, item.TempName, item.IsNormal, item.Unitid).Exec()
+	return
+}
+
+//判断指标数据是否已经录入
+func GetLongzhonginfoCount(classifyId int, unitid int64) (count int, err error) {
+	o := orm.NewOrm()
+	o.Using("edb")
+	sql := `SELECT COUNT(1) AS count FROM longzhonginfo WHERE classify_id=? AND unitid=? `
+	err = o.Raw(sql, classifyId, unitid).QueryRow(&count)
+	return
+}
+
+type LzProductInfoResp struct {
+	Msg  string           `json:"msg"`
+	Code string           `json:"code"`
+	Data []*LzProductInfo `json:"data"`
+}
+
+type LzProductInfo struct {
+	Unitid      int64  `json:"unitid"`
+	ProUnitName string `json:"proUnitName"`
+	Tempid      int64  `json:"tempid"`
+	TempName    string `json:"tempName"`
+	Proid       int    `json:"proid"`
+	ProName     string `json:"proName"`
+	Unit        string `json:"unit"`
+	LzType      string `json:"type"`
+	Maxdate     string `json:"maxdate"`
+	IsNormal    string `json:"isNormal"`
+}
+
+func GetLongzhonginfoMaxId() (count int, err error) {
+	o := orm.NewOrm()
+	o.Using("edb")
+	sql := `SELECT MAX(longzhonginfo_id) AS count FROM longzhonginfo`
+	err = o.Raw(sql).QueryRow(&count)
+	return
+}
+
+type LzProductInfoDetail struct {
+	UnitId    int64   `json:"unit_id"`
+	UnitName  string  `json:"unit_name"`
+	TempId    int     `json:"temp_id"`
+	TempName  string  `json:"temp_name"`
+	TempUnit  string  `json:"temp_unit"`
+	ProId     int     `json:"pro_id"`
+	ProCnName string  `json:"pro_cn_name"`
+	UnitValue float64 `json:"unit_value"`
+	UnitDesc  string  `json:"unit_desc"`
+	DataTime  string  `json:"data_time"`
+	UpdTime   string  `json:"upd_time"`
+}
+
+type LzProductInfoDetailResp struct {
+	Msg      string                 `json:"msg"`
+	Code     string                 `json:"code"`
+	Data     []*LzProductInfoDetail `json:"data"`
+	Pagesize int                    `json:"pagesize"`
+	Page     int                    `json:"page"`
+}
+
+func GetLongzhonginfoByUnitId(classifyName string, unitId int64) (item *Longzhongdata, err error) {
+	o := orm.NewOrm()
+	o.Using("edb")
+	sql := `SELECT * FROM longzhonginfo WHERE unitid=? AND classify_name=?`
+	err = o.Raw(sql, unitId, classifyName).QueryRow(&item)
+	return
+}
+
+func GetLongzhongDataById(lzInfoId int) (items []*Longzhongdata, err error) {
+	o := orm.NewOrm()
+	o.Using("edb")
+	sql := `SELECT * FROM longzhongdata WHERE longzhonginfo_id=? ORDER BY dt DESC `
+	_, err = o.Raw(sql, lzInfoId).QueryRows(&items)
+	return
+}
+
+func GetLongzhongDataMaxCount(classifyId int) (count int, err error) {
+	o := orm.NewOrm()
+	o.Using("edb")
+	sql := `SELECT MAX(t.num) AS count FROM (
+				SELECT COUNT(1) AS num  FROM longzhonginfo AS a
+				INNER JOIN longzhongdata AS b ON a.longzhonginfo_id=b.longzhonginfo_id
+				WHERE a.classify_id=?
+				GROUP BY a.longzhonginfo_id
+			)AS t `
+	err = o.Raw(sql, classifyId).QueryRow(&count)
+	return
+}

+ 1 - 0
models/db.go

@@ -41,5 +41,6 @@ func init() {
 		new(DataSourceLongzhong),
 		new(Longzhonginfo),
 		new(Longzhongdata),
+		new(EdbdataClassify),
 	)
 }

+ 16 - 1
models/edbdata_classify.go

@@ -6,7 +6,7 @@ import (
 )
 
 type EdbdataClassify struct {
-	ClassifyId   int
+	ClassifyId   int `orm:"column(classify_id);pk"`
 	ClassifyName string
 	ParentId     int
 	CreateTime   time.Time
@@ -20,3 +20,18 @@ func GetEdbdataClassifyByClassifyName(classifyName string) (item *EdbdataClassif
 	err = o.Raw(sql, classifyName).QueryRow(&item)
 	return
 }
+
+func AddEdbdataClassify(item *EdbdataClassify) (newId int64, err error) {
+	o := orm.NewOrm()
+	o.Using("edb")
+	newId, err = o.Insert(item)
+	return
+}
+
+func GetEdbdataClassifyByParentId(parentId int) (items []*EdbdataClassify, err error) {
+	sql := ` SELECT * FROM edbdata_classify WHERE parent_id=? `
+	o := orm.NewOrm()
+	o.Using("edb")
+	o.Raw(sql, parentId).QueryRows(&items)
+	return
+}

+ 11 - 0
models/longzhong.go

@@ -0,0 +1,11 @@
+package models
+
+import "rdluck_tools/orm"
+
+func GetLongzhonginfoByClassifyId(classifyId int) (items []*Longzhonginfo, err error) {
+	sql := `SELECT * FROM longzhonginfo WHERE classify_id=? ORDER BY longzhonginfo_id ASC `
+	o := orm.NewOrm()
+	o.Using("edb")
+	_, err = o.Raw(sql, classifyId).QueryRows(&items)
+	return
+}

+ 16 - 0
models/report.go

@@ -23,3 +23,19 @@ func ModifyReportContentSub(id int, contentSub string) (err error) {
 	_, err = o.Raw(sql, contentSub, id).Exec()
 	return
 }
+
+func GetReportLimit() (items []*Report, err error) {
+	sql := `SELECT * FROM report WHERE state=2 ORDER BY id DESC LIMIT 50 `
+	o := orm.NewOrm()
+	o.Using("rddp")
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}
+
+func EditReportContent(reportId int, content, contentSub string) (err error) {
+	o := orm.NewOrm()
+	o.Using("rddp")
+	sql := ` UPDATE report SET content=?,content_sub=?,modify_time=NOW() WHERE id=? `
+	_, err = o.Raw(sql, content, contentSub, reportId).Exec()
+	return
+}

+ 453 - 0
services/data_source_longzhong.go

@@ -0,0 +1,453 @@
+package services
+
+import (
+	"encoding/json"
+	"errors"
+	"fmt"
+	"github.com/tealeg/xlsx"
+	"hongze/hongze_task/models"
+	"hongze/hongze_task/utils"
+	"net/url"
+	"os"
+	"path/filepath"
+	"rdluck_tools/http"
+	"strconv"
+	"time"
+)
+
+//获取隆众信息表中指标
+func GetLongZhongTargetInfoByExcel() {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println("err:" + err.Error())
+			return
+		}
+	}()
+
+	excelPath := `./static/longzhong_0824.xlsx`
+	file, err := xlsx.OpenFile(excelPath)
+	if err != nil {
+		fmt.Println("err:", err.Error())
+		return
+	}
+	sheets := file.Sheets
+	for k, v := range sheets {
+		fmt.Println(k, v.Name)
+		classify, err := models.GetEdbdataClassifyByClassifyName(v.Name)
+		if err != nil {
+			if err.Error() == utils.ErrNoRow() {
+				err = errors.New("分类不存在:Err:" + err.Error())
+			} else {
+				err = err
+			}
+			return
+		}
+		if classify == nil {
+			err = errors.New("分类不存在,请重新核对")
+			return
+		}
+
+		classifyId := classify.ClassifyId
+		classifyName := classify.ClassifyName
+		fmt.Println(classifyId, classifyName)
+		maxRow := v.MaxRow
+		//maxCol := v.MaxCol
+		fmt.Println(classifyName, maxRow)
+		for i := 0; i < maxRow; i++ {
+			row, err := v.Row(i)
+			if err != nil {
+				return
+			}
+			longzhongClassify := ""
+			if i > 0 {
+				longzhongClassifyNew := row.GetCell(0).String()
+				if longzhongClassifyNew != "" {
+					longzhongClassify = longzhongClassifyNew
+				}
+				secName := row.GetCell(1).Value
+				frequency := row.GetCell(2).Value
+				LongzhongId := row.GetCell(3).Value
+				remark := row.GetCell(4).String()
+				item := new(models.DataSourceLongzhong)
+				item.ClassifyId = classifyId
+				item.ClassifyName = classifyName
+				item.SecName = secName
+				item.Frequency = frequency
+				item.LongzhongId = LongzhongId
+				item.Remark = remark
+				item.LongzhongClassify = longzhongClassify
+				_, err = models.AddDataSourceLongzhong(item)
+				if err != nil {
+					fmt.Println("Err:", err.Error())
+					return
+				}
+			}
+		}
+	}
+}
+
+func GetLzProductList() {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println("Err:" + err.Error())
+		}
+	}()
+	postUrl := `http://info.oilchem.net/cust/interfacenew/getProductUnitListNew`
+	username := "hzmd"
+	password := "HZMD2020"
+	timestamp := fmt.Sprintf("%d", time.Now().Unix())
+	fmt.Println(timestamp)
+	token := utils.MD5(username + timestamp + utils.MD5(password))
+	fmt.Println("token:", token)
+
+	param := url.Values{}
+	param.Add("username", username)
+	param.Add("password", password)
+	param.Add("timestamp", timestamp)
+	param.Add("token", token)
+	utils.FileLog.Info("%s", param.Encode())
+	body, err := http.Post(postUrl, param.Encode())
+	if err != nil {
+		fmt.Println("err:", err.Error())
+		return
+	}
+	result := string(body)
+	if result == "" {
+		err = errors.New("返回内容为空")
+		return
+	}
+	resp := new(models.LzProductInfoResp)
+	err = json.Unmarshal(body, &resp)
+	if err != nil {
+		fmt.Println("json.Unmarshal Err:" + err.Error())
+		return
+	}
+	if resp.Code != "1" {
+		fmt.Println("获取信息失败")
+		err = errors.New("Code:" + resp.Code + ";Msg:" + resp.Msg)
+		return
+	}
+	fmt.Println("len")
+	fmt.Println(len(resp.Data))
+	for _, v := range resp.Data {
+		fmt.Println(v.Unitid, v.ProName, v.ProUnitName)
+		var classifyId int
+		var classifyName string
+		classify, err := models.GetEdbdataClassifyByClassifyName(v.ProName)
+		if err != nil && err.Error() != utils.ErrNoRow() {
+			fmt.Println("获取分类失败,Err:" + err.Error())
+			return
+		}
+		if classify == nil || (err != nil && err.Error() == utils.ErrNoRow()) {
+			classifyItem := new(models.EdbdataClassify)
+			classifyItem.ClassifyName = v.ProName
+			classifyItem.ParentId = 4
+			classifyItem.CreateTime = time.Now()
+			newId, err := models.AddEdbdataClassify(classifyItem)
+			if err != nil {
+				fmt.Println("新增分类失败,Err:" + err.Error())
+				return
+			}
+			classifyId = int(newId)
+			classifyName = v.ProName
+		} else {
+			classifyId = classify.ClassifyId
+			classifyName = classify.ClassifyName
+		}
+		count, err := models.GetLongzhonginfoCount(classifyId, v.Unitid)
+		if err != nil {
+			fmt.Println("判断指标是否存在失败,Err:" + err.Error())
+			return
+		}
+		if count > 0 { //修改
+			lzProduct := new(models.Longzhonginfo)
+			lzProduct.SecName = v.ProUnitName
+			lzProduct.Frequency = v.LzType
+			lzProduct.ClassifyId = classifyId
+			lzProduct.ClassifyName = classifyName
+			lzProduct.Unit = v.Unit
+			lzProduct.CreateTime = time.Now()
+			if v.IsNormal == "" {
+				v.IsNormal = "1"
+			}
+			lzProduct.IsNormal = v.IsNormal
+			lzProduct.LastModifyDate = v.Maxdate
+			lzProduct.Unitid = v.Unitid
+			lzProduct.TempId = v.Tempid
+			lzProduct.TempName = v.TempName
+			lzProduct.ModifyTime = time.Now()
+			err = models.ModifyLongzhonginfo(lzProduct)
+			if err != nil {
+				fmt.Println("修改失败,Err:" + err.Error())
+			}
+		} else { //新增
+			maxId, err := models.GetLongzhonginfoMaxId()
+			if err != nil {
+				fmt.Println("获取编码失败,err:" + err.Error())
+				return
+			}
+			tradeCode := fmt.Sprintf("L%06d", maxId+1)
+			lzProduct := new(models.Longzhonginfo)
+			lzProduct.TradeCode = tradeCode
+			lzProduct.SecName = v.ProUnitName
+			lzProduct.Frequency = v.LzType
+			lzProduct.ClassifyId = classifyId
+			lzProduct.ClassifyName = classifyName
+			lzProduct.Unit = v.Unit
+			lzProduct.CreateTime = time.Now()
+			if v.IsNormal == "" {
+				v.IsNormal = "1"
+			}
+			lzProduct.IsNormal = v.IsNormal
+			lzProduct.LastModifyDate = v.Maxdate
+			lzProduct.Unitid = v.Unitid
+			lzProduct.TempId = v.Tempid
+			lzProduct.TempName = v.TempName
+			lzProduct.ModifyTime = time.Now()
+			_, err = models.AddLongzhonginfo(lzProduct)
+			if err != nil {
+				fmt.Println("新增指标信息失败")
+				return
+			}
+		}
+	}
+}
+
+func GetLzProductDetail() {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println("Err:" + err.Error())
+		}
+	}()
+
+	startDate := time.Now().AddDate(0, 0, -20).Format(utils.FormatDate)
+	endDate := time.Now().AddDate(0, 0, -10).Format(utils.FormatDate)
+	pageSize := 30
+
+	postUrl := `http://info.oilchem.net/cust/interfacenew/getProductUnitDetailNew`
+	username := "hzmd"
+	password := "HZMD2020"
+	timestamp := fmt.Sprintf("%d", time.Now().Unix())
+	token := utils.MD5(username + timestamp + utils.MD5(password))
+
+	totalPage := 10
+	for i := 1; i <= totalPage; i++ {
+		fmt.Println("page:", i)
+		param := url.Values{}
+		param.Add("username", username)
+		param.Add("password", password)
+		param.Add("timestamp", timestamp)
+		param.Add("token", token)
+		//param.Add("id", "334")
+		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
+		}
+		utils.FileLog.Info("%s", string(body))
+		resp := new(models.LzProductInfoDetailResp)
+		err = json.Unmarshal(body, &resp)
+		if err != nil {
+			fmt.Println("Unmarshal Err:" + err.Error())
+			return
+		}
+		if resp.Code != "1" {
+			fmt.Println("获取信息失败")
+			err = errors.New("Code:" + resp.Code + ";Msg:" + resp.Msg)
+			return
+		}
+		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
+			}
+			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
+			}
+			if count > 0 {
+				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
+				}
+			} 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
+				}
+			}
+		}
+		if resp.Pagesize < pageSize || len(resp.Data) == 0 {
+			return
+		}
+		time.Sleep(2 * time.Second)
+	}
+}
+
+func GetLzPrice() {
+	fmt.Println("start")
+	/*getUrl:=`https://openapi.oilchem.net/price/getProduct?password=HZMD2020&type=guoji&username=hzmd`
+	result,err:=http.Get(getUrl)
+	fmt.Println(string(result),err)
+	utils.FileLog.Info("%s",string(result))*/
+
+	getUrl := `https://openapi.oilchem.net/price/getPrice?password=HZMD2020&type=guoji&username=hzmd&inStartDate=2020-08-20&inEndDate=2020-08-26`
+	result, err := http.Get(getUrl)
+	fmt.Println(string(result), err)
+	utils.FileLog.Info("%s", string(result))
+
+	fmt.Println("end")
+}
+
+func LzExportExcel() {
+	var err error
+	defer func() {
+		if err != nil {
+			fmt.Println("err:" + err.Error())
+		}
+	}()
+	parentId := 4
+	classifyList, err := models.GetEdbdataClassifyByParentId(parentId)
+	if err != nil {
+		return
+	}
+	xlsxFile := xlsx.NewFile()
+	if err != nil {
+		fmt.Println("生成文件失败" + err.Error())
+		return
+	}
+	dir, _ := os.Executable()
+	exPath := filepath.Dir(dir)
+	downLoadnFilePath := exPath + "/static/" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
+	fmt.Println("downLoadnFilePath")
+	fmt.Println(downLoadnFilePath)
+	for _, v := range classifyList {
+		fmt.Println(v.ClassifyId, v.ClassifyName)
+		//获取指标
+		secNameList, err := models.GetLongzhonginfoByClassifyId(v.ClassifyId)
+		if err != nil {
+			fmt.Println("获取数据失败,Err:" + err.Error())
+			return
+		}
+		if len(secNameList) <= 0 {
+			continue
+		}
+		sheetNew, err := xlsxFile.AddSheet(v.ClassifyName)
+		if err != nil {
+			fmt.Println("新增Sheet失败", err.Error())
+			return
+		}
+		//获取指标数据
+		windRow := sheetNew.AddRow()
+		secNameRow := sheetNew.AddRow()
+		frequencyRow := sheetNew.AddRow()
+		unitRow := sheetNew.AddRow()
+		lastModifyDateRow := sheetNew.AddRow()
+		//获取分类下指标最大数据量
+		dataMax, err := models.GetLongzhongDataMaxCount(v.ClassifyId)
+		if err != nil {
+			fmt.Println("获取指标最大数据量失败", err.Error())
+			return
+		}
+		for _, sv := range secNameList {
+			fmt.Println("line 399:", v.ClassifyId, v.ClassifyName, sv.SecName, sv.Frequency)
+
+			windRow.AddCell().SetValue("Wind")
+			secNameRow.AddCell().SetValue("指标名称")
+			frequencyRow.AddCell().SetValue("频率")
+			unitRow.AddCell().SetValue("单位")
+			lastModifyDateRow.AddCell().SetValue("更新时间")
+
+			secNameRow.AddCell().SetValue(sv.SecName)
+			frequencyRow.AddCell().SetValue(sv.Frequency)
+			unitRow.AddCell().SetValue(sv.Unit)
+			lastModifyDateRow.AddCell().SetValue(sv.LastModifyDate)
+
+			windRow.AddCell()
+			windRow.AddCell()
+			secNameRow.AddCell()
+			frequencyRow.AddCell()
+			unitRow.AddCell()
+			lastModifyDateRow.AddCell()
+
+			//获取数据
+			dataList, err := models.GetLongzhongDataById(sv.LongzhonginfoId)
+			if err != nil {
+				fmt.Println("GetLongzhongDataById Err:" + err.Error())
+				return
+			}
+			if len(dataList) <= 0 {
+				for n := 0; n < dataMax; n++ {
+					rowIndex := 5 + n
+					row, err := sheetNew.Row(rowIndex)
+					if err != nil {
+						fmt.Println("add row err:" + err.Error())
+						return
+					}
+					row.AddCell()
+					row.AddCell()
+					row.AddCell()
+				}
+			} else {
+				for rk, dv := range dataList {
+					rowIndex := 5 + rk
+					row, err := sheetNew.Row(rowIndex)
+					if err != nil {
+						fmt.Println("add row err:" + err.Error())
+						return
+					}
+					row.AddCell().SetValue(dv.Dt)
+					row.AddCell().SetFloat(dv.Close)
+					row.AddCell()
+				}
+			}
+		}
+		err = xlsxFile.Save(downLoadnFilePath)
+		if err != nil {
+			return
+		}
+	}
+}

+ 0 - 81
services/edbinfo_longzhong.go

@@ -1,81 +0,0 @@
-package services
-
-import (
-	"errors"
-	"fmt"
-	"github.com/tealeg/xlsx"
-	"hongze/hongze_task/models"
-	"hongze/hongze_task/utils"
-)
-
-//获取隆众信息表中指标
-func GetLongZhongTargetInfoByExcel() {
-	var err error
-	defer func() {
-		if err != nil {
-			fmt.Println("err:" + err.Error())
-			return
-		}
-	}()
-
-	excelPath := `./static/longzhong_0824.xlsx`
-	file, err := xlsx.OpenFile(excelPath)
-	if err != nil {
-		fmt.Println("err:", err.Error())
-		return
-	}
-	sheets := file.Sheets
-	for k, v := range sheets {
-		fmt.Println(k, v.Name)
-		classify, err := models.GetEdbdataClassifyByClassifyName(v.Name)
-		if err != nil {
-			if err.Error() == utils.ErrNoRow() {
-				err = errors.New("分类不存在:Err:" + err.Error())
-			} else {
-				err = err
-			}
-			return
-		}
-		if classify == nil {
-			err = errors.New("分类不存在,请重新核对")
-			return
-		}
-
-		classifyId := classify.ClassifyId
-		classifyName := classify.ClassifyName
-		fmt.Println(classifyId, classifyName)
-		maxRow := v.MaxRow
-		//maxCol := v.MaxCol
-		fmt.Println(classifyName, maxRow)
-		for i := 0; i < maxRow; i++ {
-			row, err := v.Row(i)
-			if err != nil {
-				return
-			}
-			longzhongClassify := ""
-			if i > 0 {
-				longzhongClassifyNew := row.GetCell(0).String()
-				if longzhongClassifyNew != "" {
-					longzhongClassify = longzhongClassifyNew
-				}
-				secName := row.GetCell(1).Value
-				frequency := row.GetCell(2).Value
-				LongzhongId := row.GetCell(3).Value
-				remark := row.GetCell(4).String()
-				item := new(models.DataSourceLongzhong)
-				item.ClassifyId = classifyId
-				item.ClassifyName = classifyName
-				item.SecName = secName
-				item.Frequency = frequency
-				item.LongzhongId = LongzhongId
-				item.Remark = remark
-				item.LongzhongClassify = longzhongClassify
-				_, err = models.AddDataSourceLongzhong(item)
-				if err != nil {
-					fmt.Println("Err:", err.Error())
-					return
-				}
-			}
-		}
-	}
-}

+ 68 - 3
services/report.go

@@ -16,7 +16,7 @@ func FixReportContentSub() {
 		return
 	}
 	for k, v := range items {
-		fmt.Println(k, v.Id,v.ContentSub)
+		fmt.Println(k, v.Id, v.ContentSub)
 		content := html.UnescapeString(v.Content)
 		utils.FileLog.Info("%s", content)
 		doc, err := goquery.NewDocumentFromReader(strings.NewReader(content))
@@ -32,8 +32,8 @@ func FixReportContentSub() {
 			}
 			n++
 			phtml, err := s.Html()
-			if err!=nil {
-				fmt.Println("get html err",err.Error())
+			if err != nil {
+				fmt.Println("get html err", err.Error())
 				return
 			}
 			if s.Text() != "" || strings.Contains(phtml, "src") {
@@ -47,3 +47,68 @@ func FixReportContentSub() {
 		}
 	}
 }
+//
+//func FixReportCount() {
+//	var err error
+//	defer func() {
+//		if err != nil {
+//			fmt.Println("err:", err.Error())
+//		}
+//	}()
+//	list, err := models.GetReportLimit()
+//	if err != nil {
+//		return
+//	}
+//	for _, v := range list {
+//		content := v.Content
+//		contentHtml := html.UnescapeString(content)
+//		doc, err := goquery.NewDocumentFromReader(strings.NewReader(contentHtml))
+//		if err != nil {
+//			fmt.Println("line 70:"+err.Error())
+//			return
+//		}
+//		isModify := false
+//		doc.Find("img").Each(func(i int, img *goquery.Selection) {
+//			imgContent, srcExist := img.Attr("src")
+//			if srcExist {
+//				if strings.Contains(imgContent, "data:image/png;base64,") {
+//					contentBase64 := imgContent
+//					contentBase64 = strings.Replace(contentBase64, "data:image/png;base64,", "", -1)
+//					dateDir := time.Now().Format("20060102")
+//					uploadDir := "./" + dateDir
+//					err = os.MkdirAll(uploadDir, 777)
+//					if err != nil {
+//						return
+//					}
+//					randStr := utils.GetRandStringNoSpecialChar(28)
+//					fileName := randStr + ".png"
+//					fpath := uploadDir + "/" + fileName
+//					utils.SaveBase64ToFile(contentBase64, fpath)
+//					if err != nil {
+//						return
+//					}
+//					//上传到阿里云
+//					resourceUrl, err := services.UploadAliyun(fileName, fpath)
+//					if err != nil {
+//						return
+//					}
+//					img.SetAttr("src", resourceUrl)
+//					isModify = true
+//				}
+//			}
+//		})
+//		contentHtml, _ = doc.Html()
+//		fmt.Println(contentHtml)
+//		fmt.Println("isModify", isModify)
+//		if isModify {
+//			contentHtml, _ = doc.Html()
+//			contentSub, err := services.GetReportContentSub(contentHtml)
+//			if err != nil {
+//				utils.SendEmail(utils.APPNAME+"失败提醒", "解析 ContentSub 失败,Err:"+err.Error(), utils.EmailSendToUsers)
+//			}
+//			contentHtml = html.EscapeString(contentHtml)
+//			contentSub = html.EscapeString(contentSub)
+//			err = models.EditReportContent(v.Id, contentHtml, contentSub)
+//		}
+//	}
+//}

+ 5 - 3
services/task.go

@@ -12,10 +12,12 @@ func Task() {
 
 	//oneMinute := toolbox.NewTask("oneMinute", "0 */1 * * * * ", OneMinute)
 	//toolbox.AddTask("oneMinute", oneMinute)
-	//ImportCompanyUsers()
-	//addCompany12()
 	//toolbox.StartTask()
-	//GetLongZhongTargetInfoByExcel()
+
+	//GetLzProductDetail()
+	//GetLzPrice()
+	//GetLzProductDetail()
+	LzExportExcel()
 	fmt.Println("task end")
 }