Kaynağa Gözat

test 待调试

hsun 1 yıl önce
ebeveyn
işleme
8b287a2b3a

+ 11 - 58
config/config.go

@@ -1,25 +1,21 @@
 package config
 
-import "time"
-
 type Config struct {
-	Log      Log      `mapstructure:"log" json:"log" yaml:"log"`
-	Serve    Serve    `mapstructure:"serve" json:"serve" yaml:"serve"`
-	Mysql    Mysql    `mapstructure:"mysql" json:"mysql" yaml:"mysql"`
-	Redis    Redis    `mapstructure:"redis" json:"redis" yaml:"redis"`
-	AliOss   AliOss   `mapstructure:"ali-oss" json:"ali-oss" yaml:"ali-oss"`
-	EsClient EsClient `mapstructure:"es_client" json:"es_client" yaml:"es_client"`
+	Log   Log   `mapstructure:"log" json:"log" yaml:"log"`
+	Serve Serve `mapstructure:"serve" json:"serve" yaml:"serve"`
+	Redis Redis `mapstructure:"redis" json:"redis" yaml:"redis"`
 }
 
 // Serve gin服务配置
 type Serve struct {
-	Port            int    `mapstructure:"port" json:"port" yaml:"port" description:"gin开启监听http服务的端口"`
-	RunMode         string `mapstructure:"run-mode" json:"run-mode" yaml:"run-mode" description:"gin运行模式的默认,枚举值:debug,release"`
-	UseRedis        bool   `mapstructure:"use-redis" json:"use-redis" yaml:"use-redis" description:"是否使用redis"`
-	AppName         string `mapstructure:"app-name" json:"app-name" yaml:"app-name" description:"项目名称"`
-	StaticDir       string `mapstructure:"static-dir" json:"static-dir" yaml:"static-dir" description:"上传的文件存储目录地址"`
-	EdbLibUrl       string `mapstructure:"edb-lib-url" json:"edb-lib-url" yaml:"edb-lib-url" description:"公共指标库的地址"`
-	ListenExcelPath string `mapstructure:"listen-excel-path" json:"listen-excel-path" yaml:"listen-excel-path" description:"监听文件夹的路径"`
+	Port              int    `mapstructure:"port" json:"port" yaml:"port" description:"gin开启监听http服务的端口"`
+	RunMode           string `mapstructure:"run-mode" json:"run-mode" yaml:"run-mode" description:"gin运行模式的默认,枚举值:debug,release"`
+	UseRedis          bool   `mapstructure:"use-redis" json:"use-redis" yaml:"use-redis" description:"是否使用redis"`
+	AppName           string `mapstructure:"app-name" json:"app-name" yaml:"app-name" description:"项目名称"`
+	StaticDir         string `mapstructure:"static-dir" json:"static-dir" yaml:"static-dir" description:"上传的文件存储目录地址"`
+	EdbLibUrl         string `mapstructure:"edb-lib-url" json:"edb-lib-url" yaml:"edb-lib-url" description:"公共指标库的地址"`
+	IndexSaveDir      string `mapstructure:"index-save-dir" json:"index-save-dir" yaml:"index-save-dir" description:"监听文件夹的路径"`
+	IndexMergeSaveDir string `mapstructure:"index-merge-save-dir" json:"index-merge-save-dir" yaml:"index-merge-save-dir" description:"监听合并文件夹的路径"`
 }
 
 // Log 日志配置
@@ -36,52 +32,9 @@ type Log struct {
 	BinlogSoftLink string `mapstructure:"binlog-soft-link" json:"binlog-soft-link" yaml:"binlog-soft-link" description:"binlog日志软链接"`
 }
 
-// Mysql 数据库配置
-type Mysql struct {
-	//LogMode             bool        `mapstructure:"log-mode" json:"log-mode" yaml:"log-mode" description:"是否开启日志"`
-	Stdout              bool        `mapstructure:"stdout" json:"stdout" yaml:"stdout" description:"日志是否输出在控制台"`
-	DefaultDsnAliasName string      `mapstructure:"default-dsn-alias-name" json:"default-dsn-alias-name" yaml:"default-dsn-alias-name" description:"默认的数据库连接别名"`
-	List                []MysqlConn `mapstructure:"list" json:"list" yaml:"list" description:"数据库链接配置列表"`
-}
-
-// MysqlConn mysql数据链接配置
-type MysqlConn struct {
-	Dsn          string `mapstructure:"dsn" json:"dsc" yaml:"dsn" description:"数据库连接配置"`
-	AliasName    string `mapstructure:"alias-name" json:"alias-name" yaml:"alias-name" description:"数据库别名"`
-	MaxIdleConns int    `mapstructure:"max-idle-conns" json:"max-idle-conns" yaml:"max-idle-conns" description:"最大空闲连接"`
-	MaxOpenConns int    `mapstructure:"max-open-conns" json:"max-open-conns" yaml:"max-open-conns" description:"最大连接数"`
-}
-
 // Redis redis配置
 type Redis struct {
 	Address  string `mapstructure:"address" json:"address" yaml:"address" description:"redis服务链接地址"`
 	Password string `mapstructure:"password" json:"password" yaml:"password" description:"redis服务密码"`
 	Db       int    `mapstructure:"db" json:"db" yaml:"db" description:"默认使用的redis库"`
 }
-
-// AliOss aliOss配置
-type AliOss struct {
-	BucketName      string `mapstructure:"bucket-name" json:"bucket-name" yaml:"bucket-name"`
-	EndPoint        string `mapstructure:"end-point" json:"end-point" yaml:"end-point"`
-	ImgHost         string `mapstructure:"img-host" json:"img-host" yaml:"img-host" description:"阿里oss主机地址"`
-	UploadDir       string `mapstructure:"upload-dir" json:"upload-dir" yaml:"upload-dir" description:"图片上传的文件目录"`
-	UploadAudioDir  string `mapstructure:"upload-audio-dir" json:"upload-audio-dir" yaml:"upload-audio-dir" description:"视频上传的文件目录"`
-	AccessKeyId     string `mapstructure:"access-key-id" json:"access-key-id" yaml:"access-key-id" description:"access-key-id"`
-	AccessKeySecret string `mapstructure:"access-key-secret" json:"access-key-secret" yaml:"access-key-secret" description:"access-key-secret"`
-}
-
-// EsClient es客户端配置
-type EsClient struct {
-	// 终端地址
-	Endpoints string `json:"endpoints" yaml:"endpoints"`
-	// 用户
-	Username string `json:"username" yaml:"username"`
-	// 密码
-	Password string `json:"password" yaml:"password"`
-	// 超时时间,单位ms
-	Timeout time.Duration `json:"timeout" yaml:"timeout"`
-	// es日志目录
-	Log string `json:"log" yaml:"log"`
-	// 索引前缀
-	Prefix string `json:"prefix" yaml:"prefix"`
-}

+ 3 - 4
controller/index/index.go

@@ -10,7 +10,6 @@ import (
 	"hongze/mysteel_watch/global"
 	"hongze/mysteel_watch/models/index"
 	"hongze/mysteel_watch/services"
-	"hongze/mysteel_watch/utils"
 	"os"
 	"time"
 )
@@ -47,9 +46,9 @@ func (s *IndexController) Create(c *gin.Context) {
 	} else {
 		fileName = req.IndexCode + "_" + req.RunMode + ".xlsx" //保存的文件名称
 	}
-	filePath := utils.IndexSaveDir + fileName
+	filePath := global.CONFIG.Serve.IndexSaveDir + fileName
 
-	templatePath := utils.IndexSaveDir + "index_template.xlsx"
+	templatePath := global.CONFIG.Serve.IndexSaveDir + "index_template.xlsx"
 	templateFile, err := excelize.OpenFile(templatePath)
 	if err != nil {
 		resp.FailData("打开文件失败", "打开文件失败,Err:"+err.Error(), c)
@@ -122,7 +121,7 @@ func (s *IndexController) Delete(c *gin.Context) {
 	} else {
 		fileName = req.IndexCode + "_" + req.RunMode + ".xlsx" //保存的文件名称
 	}
-	filePath := utils.IndexSaveDir + fileName
+	filePath := global.CONFIG.Serve.IndexSaveDir + fileName
 	err = os.Remove(filePath)
 	if err != nil {
 		fmt.Println("filePath:" + filePath)

+ 11 - 11
core/log.go

@@ -43,20 +43,20 @@ func init() {
 	global.LOG = logger
 
 	//初始化mysql数据库日志
-	initMysqlLog()
+	//initMysqlLog()
 }
 
 // initMysqlLog 初始化mysql数据库日志
-func initMysqlLog() {
-	logConfig := global.CONFIG.Log
-	var backends []oplogging.Backend
-	//注册输出
-	registerStdout(logConfig, &backends)
-
-	//注册框架输出(日志文件)
-	fileWriter := registerFile(logConfig, &backends, logConfig.BinlogDirPath, logConfig.BinlogSoftLink)
-	global.MYSQL_LOG = fileWriter
-}
+//func initMysqlLog() {
+//	logConfig := global.CONFIG.Log
+//	var backends []oplogging.Backend
+//	//注册输出
+//	registerStdout(logConfig, &backends)
+//
+//	//注册框架输出(日志文件)
+//	fileWriter := registerFile(logConfig, &backends, logConfig.BinlogDirPath, logConfig.BinlogSoftLink)
+//	global.MYSQL_LOG = fileWriter
+//}
 
 func registerStdout(c config.Log, backends *[]oplogging.Backend) {
 	if c.Stdout != "" {

+ 1 - 1
core/run_server.go

@@ -10,7 +10,7 @@ func RunServe() {
 	//初始化路由
 	r := init_serve.InitRouter()
 	//初始化mysql数据库
-	init_serve.Mysql()
+	//init_serve.Mysql()
 	//如果配置了redis,那么链接redis
 	fmt.Println("redis")
 	fmt.Println(global.CONFIG.Serve.UseRedis)

+ 6 - 9
global/global.go

@@ -4,25 +4,22 @@ import (
 	"fmt"
 	"github.com/fsnotify/fsnotify"
 	"github.com/go-redis/redis/v8"
-	"github.com/olivere/elastic/v7"
 	oplogging "github.com/op/go-logging"
+	"github.com/rdlucklib/rdluck_tools/cache"
 	"github.com/spf13/viper"
 	"gorm.io/gorm"
 	"hongze/mysteel_watch/config"
 	"hongze/mysteel_watch/utils"
-	"io"
-
-	"github.com/rdlucklib/rdluck_tools/cache"
 )
 
 var (
-	CONFIG        config.Config //配置文件
-	LOG           *oplogging.Logger
-	MYSQL         map[string]*gorm.DB //数据库连接配置
-	MYSQL_LOG     io.Writer
+	CONFIG config.Config //配置文件
+	LOG    *oplogging.Logger
+	//MYSQL         map[string]*gorm.DB //数据库连接配置
+	//MYSQL_LOG     io.Writer
 	DEFAULT_MYSQL *gorm.DB      //默认数据库连接配置
 	Redis         *redis.Client //redis链接
-	EsClient      *elastic.Client
+	//EsClient      *elastic.Client
 
 	Rc *cache.Cache //redis缓存
 	Re error        //redis错误

+ 0 - 73
init_serve/mysql.go

@@ -1,73 +0,0 @@
-package init_serve
-
-import (
-	"fmt"
-	"gorm.io/driver/mysql"
-	"gorm.io/gorm"
-	"gorm.io/gorm/logger"
-	"hongze/mysteel_watch/global"
-	"io"
-	"log"
-	"os"
-	"time"
-)
-
-// Mysql 数据库初始化
-func Mysql() {
-	mysqlConf := global.CONFIG.Mysql
-	if len(mysqlConf.List) <= 0 {
-		global.LOG.Error("mysql链接未配置")
-		panic(fmt.Errorf("mysql链接未配置"))
-	}
-
-	//开启日志
-	logWriter := io.MultiWriter(global.MYSQL_LOG) //binlog日志,记录到文件中去
-	if global.CONFIG.Mysql.Stdout {
-		logWriter = io.MultiWriter(global.MYSQL_LOG, os.Stdout)
-	}
-	newLogger := logger.New(log.New(logWriter, "\r\n", log.LstdFlags), logger.Config{
-		SlowThreshold:             200 * time.Millisecond, //慢sql :200ms
-		LogLevel:                  logger.Info,            //记录的日志类型,info代表所有信息都记录
-		IgnoreRecordNotFoundError: true,                   //是否忽略找不到数据错误信息(只是日志记录记录成err还是普通的输出的区别,并不影响业务代码中的:找不到数据行error)
-		Colorful:                  true,                   //是否颜色输出
-	})
-
-	mysqlMap := make(map[string]*gorm.DB)
-	for _, conf := range mysqlConf.List {
-		dsn := conf.Dsn
-
-		db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
-			Logger: newLogger,
-		})
-		if err != nil {
-			global.LOG.Errorf("mysql 启动异常,数据库:", conf.AliasName, ";Err:", err)
-			panic(fmt.Errorf("mysql 启动异常,数据库:", conf.AliasName, "Err:%s", err))
-		}
-
-		//创建连接池
-		sqlDB, err := db.DB()
-		if err != nil {
-			global.LOG.Errorf("mysql 创建连接池失败,数据库:", conf.AliasName, ";Err:", err)
-			panic(fmt.Errorf("mysql 创建连接池失败,数据库:", conf.AliasName, "Err:%s", err))
-		}
-
-		mysqlMap[conf.AliasName] = db
-
-		//默认数据库连接
-		if mysqlConf.DefaultDsnAliasName == conf.AliasName {
-			global.DEFAULT_MYSQL = db
-		}
-
-		// SetMaxIdleConns 设置空闲连接池中连接的最大数量
-		sqlDB.SetMaxIdleConns(conf.MaxIdleConns)
-
-		// SetMaxOpenConns 设置打开数据库连接的最大数量。
-		sqlDB.SetMaxOpenConns(conf.MaxOpenConns)
-
-		// SetConnMaxLifetime 设置了连接可复用的最大时间。
-		//sqlDB.SetConnMaxLifetime(time.Hour)
-	}
-
-	//全局赋值数据库链接
-	global.MYSQL = mysqlMap
-}

+ 32 - 100
init_serve/task.go

@@ -13,92 +13,6 @@ import (
 )
 
 func InitTask() {
-	//
-	//c := cron.New(cron.WithSeconds())
-	//
-	////每5分钟检测一次,指标生成
-	//_, err := c.AddFunc("0 */1 * * * *", CheckIndexCreate)
-	//if err != nil {
-	//	global.LOG.Info("DownloadCvTask err" + err.Error())
-	//}
-	//
-	//////每30分钟检测一次,周度指标刷新
-	////_, err = c.AddFunc("0 */30 * * * *", services.IndexRefreshWeek)
-	////if err != nil {
-	////	global.LOG.Info("DownloadCvTask err" + err.Error())
-	////	panic("DownloadCvTask err" + err.Error())
-	////}
-	//
-	//_, err = c.AddFunc("0 00 17 * * *", services.IndexRefreshAll)
-	//if err != nil {
-	//	global.LOG.Info("DownloadCvTask err" + err.Error())
-	//}
-	//
-	////单独刷新甲醇指标
-	//_, err = c.AddFunc("0 00 18 * * *", services.IndexRefreshMethanol)
-	//if err != nil {
-	//	global.LOG.Info("DownloadCvTask err" + err.Error())
-	//}
-	//
-	//_, err = c.AddFunc("0 */10 * * * *", services.Merge)
-	//if err != nil {
-	//	global.LOG.Info("DownloadCvTask err" + err.Error())
-	//}
-	//
-	////检测需要及时刷新的指标
-	//_, err = c.AddFunc("0 30 17 * * *", services.IndexRefreshTimely)
-	//if err != nil {
-	//	global.LOG.Info("DownloadCvTask err" + err.Error())
-	//}
-	////
-	//////其他指标刷新
-	////_, err = c.AddFunc("0 30 12 * * *", services.IndexRefreshAll)
-	////if err != nil {
-	////	global.LOG.Info("DownloadCvTask err" + err.Error())
-	////	panic("DownloadCvTask err" + err.Error())
-	////}
-	//
-	////服务检测
-	//_, err = c.AddFunc("0 */1 * * * *", services.ServerCheck)
-	//if err != nil {
-	//	global.LOG.Info("ServerCheck err" + err.Error())
-	//}
-	//
-	//c.Start()
-	//
-	////go watch.ListenFolderNew()
-	go watch.ListenFolderNew()
-	go watch.ListenFolderNewMerge()
-	//
-	////redis 队列刷新指标
-	//go services.AutoRefresh()
-
-	//CheckIndexCreate()
-	fmt.Println("start services.Merge")
-	//services.Merge()
-	//yearFile="year.xlsx"
-
-	//filePath := utils.IndexMsergeSaveDir + "season.xlsx"
-	//services.DataAnalysis(filePath)
-
-	//services.Merge()
-
-	fmt.Println("end services.Merge")
-}
-
-// 检测指标数据是否生成
-func CheckIndexCreate() {
-	var err error
-	defer func() {
-		if err != nil && err.Error() != "record not found" {
-			global.LOG.Info(utils.APPNAME + " 定时任务 出错" + time.Now().Format("2006-01-02 15:04:05") + ";Err:" + err.Error())
-			go alarm_msg.SendAlarmMsg(utils.APPNAME+" 定时任务 出错"+time.Now().Format("2006-01-02 15:04:05")+";Err:"+err.Error(), 3)
-		}
-	}()
-	err = services.IndexCreateCheck()
-}
-
-func InitTask2() {
 
 	c := cron.New(cron.WithSeconds())
 
@@ -108,51 +22,57 @@ func InitTask2() {
 		global.LOG.Info("DownloadCvTask err" + err.Error())
 	}
 
-	////每30分钟检测一次,周度指标刷新
+	//每30分钟检测一次,周度指标刷新
 	//_, err = c.AddFunc("0 */30 * * * *", services.IndexRefreshWeek)
+	//_, err = c.AddFunc("0 */5 * * * *", services.IndexRefreshWeek)
 	//if err != nil {
 	//	global.LOG.Info("DownloadCvTask err" + err.Error())
 	//	panic("DownloadCvTask err" + err.Error())
 	//}
 
-	_, err = c.AddFunc("0 40 17 * * *", services.IndexRefreshAll)
+	//_, err = c.AddFunc("0 00 17 * * *", services.IndexRefreshAll)
+	_, err = c.AddFunc("0 */10 * * * *", services.IndexRefreshAll)
 	if err != nil {
 		global.LOG.Info("DownloadCvTask err" + err.Error())
 	}
 
 	//单独刷新甲醇指标
-	_, err = c.AddFunc("0 00 18 * * *", services.IndexRefreshMethanol)
+	//_, err = c.AddFunc("0 00 18 * * *", services.IndexRefreshMethanol)
+	_, err = c.AddFunc("0 */12 * * * *", services.IndexRefreshMethanol)
 	if err != nil {
 		global.LOG.Info("DownloadCvTask err" + err.Error())
 	}
 
-	_, err = c.AddFunc("0 */10 * * * *", services.Merge)
+	//_, err = c.AddFunc("0 */10 * * * *", services.Merge)
+	_, err = c.AddFunc("0 */2 * * * *", services.Merge)
 	if err != nil {
 		global.LOG.Info("DownloadCvTask err" + err.Error())
 	}
 
 	//检测需要及时刷新的指标
-	_, err = c.AddFunc("0 30 17 * * *", services.IndexRefreshTimely)
+	//_, err = c.AddFunc("0 30 17 * * *", services.IndexRefreshTimely)
+	_, err = c.AddFunc("0 */5 * * * *", services.IndexRefreshTimely)
 	if err != nil {
 		global.LOG.Info("DownloadCvTask err" + err.Error())
 	}
-	//
-	////其他指标刷新
+
+	//其他指标刷新
 	//_, err = c.AddFunc("0 30 12 * * *", services.IndexRefreshAll)
+	//_, err = c.AddFunc("0 48 17 * * *", services.IndexRefreshAll)
 	//if err != nil {
 	//	global.LOG.Info("DownloadCvTask err" + err.Error())
 	//	panic("DownloadCvTask err" + err.Error())
 	//}
 
-	//服务检测
-	_, err = c.AddFunc("0 */1 * * * *", services.ServerCheck)
-	if err != nil {
-		global.LOG.Info("ServerCheck err" + err.Error())
-	}
+	//TODO:服务检测
+	//_, err = c.AddFunc("0 */1 * * * *", services.ServerCheck)
+	//if err != nil {
+	//	global.LOG.Info("ServerCheck err" + err.Error())
+	//}
 
 	c.Start()
 
-	//go watch.ListenFolderNew()
+	////go watch.ListenFolderNew()
 	go watch.ListenFolderNew()
 	go watch.ListenFolderNewMerge()
 
@@ -164,10 +84,22 @@ func InitTask2() {
 	//services.Merge()
 	//yearFile="year.xlsx"
 
-	//filePath := utils.IndexMsergeSaveDir + "season.xlsx"
+	//filePath := global.CONFIG.Serve.IndexMergeSaveDir + "season.xlsx"
 	//services.DataAnalysis(filePath)
 
 	//services.Merge()
 
 	fmt.Println("end services.Merge")
 }
+
+// 检测指标数据是否生成
+func CheckIndexCreate() {
+	var err error
+	defer func() {
+		if err != nil && err.Error() != "record not found" {
+			global.LOG.Info(utils.APPNAME + " 定时任务 出错" + time.Now().Format("2006-01-02 15:04:05") + ";Err:" + err.Error())
+			go alarm_msg.SendAlarmMsg(utils.APPNAME+" 定时任务 出错"+time.Now().Format("2006-01-02 15:04:05")+";Err:"+err.Error(), 3)
+		}
+	}()
+	err = services.IndexCreateCheck()
+}

+ 0 - 171
models/base/base.go

@@ -1,171 +0,0 @@
-package base
-
-import (
-	"context"
-	"fmt"
-	"time"
-
-	"gorm.io/gorm"
-)
-
-var globalIsRelated bool = true // 全局预加载
-
-// prepare for other
-type BaseMgr struct {
-	*gorm.DB
-	Ctx       context.Context
-	cancel    context.CancelFunc
-	timeout   time.Duration
-	isRelated bool
-}
-
-// SetTimeOut set timeout
-func (obj *BaseMgr) SetTimeOut(timeout time.Duration) {
-	obj.Ctx, obj.cancel = context.WithTimeout(context.Background(), timeout)
-	obj.timeout = timeout
-}
-
-// SetCtx set context
-func (obj *BaseMgr) SetCtx(c context.Context) {
-	if c != nil {
-		obj.Ctx = c
-	}
-}
-
-// GetCtx get context
-func (obj *BaseMgr) GetCtx() context.Context {
-	return obj.Ctx
-}
-
-// Cancel cancel context
-func (obj *BaseMgr) Cancel(c context.Context) {
-	obj.cancel()
-}
-
-// GetDB get gorm.DB info
-func (obj *BaseMgr) GetDB() *gorm.DB {
-	return obj.DB
-}
-
-// UpdateDB update gorm.DB info
-func (obj *BaseMgr) UpdateDB(db *gorm.DB) {
-	obj.DB = db
-}
-
-// GetIsRelated Query foreign key Association.获取是否查询外键关联(gorm.Related)
-func (obj *BaseMgr) GetIsRelated() bool {
-	return obj.isRelated
-}
-
-// SetIsRelated Query foreign key Association.设置是否查询外键关联(gorm.Related)
-func (obj *BaseMgr) SetIsRelated(b bool) {
-	obj.isRelated = b
-}
-
-// New new gorm.新gorm,重置条件
-func (obj *BaseMgr) New() {
-	obj.DB = obj.NewDB()
-}
-
-// NewDB new gorm.新gorm
-func (obj *BaseMgr) NewDB() *gorm.DB {
-	return obj.DB.Session(&gorm.Session{NewDB: true, Context: obj.Ctx})
-}
-
-type Options struct {
-	Query map[string]interface{}
-}
-
-// Option overrides behavior of Connect.
-type Option interface {
-	Apply(*Options)
-}
-
-type OptionFunc func(*Options)
-
-func (f OptionFunc) apply(o *Options) {
-	f(o)
-}
-
-// OpenRelated 打开全局预加载
-func OpenRelated() {
-	globalIsRelated = true
-}
-
-// CloseRelated 关闭全局预加载
-func CloseRelated() {
-	globalIsRelated = true
-}
-
-// 自定义sql查询
-type Condition struct {
-	list []*conditionInfo
-}
-
-func (c *Condition) AndWithCondition(condition bool, column string, cases string, value interface{}) *Condition {
-	if condition {
-		c.list = append(c.list, &conditionInfo{
-			andor:  "and",
-			column: column, // 列名
-			case_:  cases,  // 条件(and,or,in,>=,<=)
-			value:  value,
-		})
-	}
-	return c
-}
-
-// And a Condition by and .and 一个条件
-func (c *Condition) And(column string, cases string, value interface{}) *Condition {
-	return c.AndWithCondition(true, column, cases, value)
-}
-
-func (c *Condition) OrWithCondition(condition bool, column string, cases string, value interface{}) *Condition {
-	if condition {
-		c.list = append(c.list, &conditionInfo{
-			andor:  "or",
-			column: column, // 列名
-			case_:  cases,  // 条件(and,or,in,>=,<=)
-			value:  value,
-		})
-	}
-	return c
-}
-
-// Or a Condition by or .or 一个条件
-func (c *Condition) Or(column string, cases string, value interface{}) *Condition {
-	return c.OrWithCondition(true, column, cases, value)
-}
-
-func (c *Condition) Get() (where string, out []interface{}) {
-	firstAnd := -1
-	for i := 0; i < len(c.list); i++ { // 查找第一个and
-		if c.list[i].andor == "and" {
-			where = fmt.Sprintf("`%v` %v ?", c.list[i].column, c.list[i].case_)
-			out = append(out, c.list[i].value)
-			firstAnd = i
-			break
-		}
-	}
-
-	if firstAnd < 0 && len(c.list) > 0 { // 补刀
-		where = fmt.Sprintf("`%v` %v ?", c.list[0].column, c.list[0].case_)
-		out = append(out, c.list[0].value)
-		firstAnd = 0
-	}
-
-	for i := 0; i < len(c.list); i++ { // 添加剩余的
-		if firstAnd != i {
-			where += fmt.Sprintf(" %v `%v` %v ?", c.list[i].andor, c.list[i].column, c.list[i].case_)
-			out = append(out, c.list[i].value)
-		}
-	}
-
-	return
-}
-
-type conditionInfo struct {
-	andor  string
-	column string // 列名
-	case_  string // 条件(in,>=,<=)
-	value  interface{}
-}

+ 0 - 165
models/base/page.go

@@ -1,165 +0,0 @@
-package base
-
-import (
-	"fmt"
-	"strings"
-)
-
-type IPage interface {
-	GetTotal() int64             //获取总记录数
-	SetTotal(int64)              //设置总记录数
-	GetCurrent() int64           //获取当前页
-	SetCurrent(int64)            //设置当前页
-	GetPageSize() int64          //获取每页显示大小
-	SetPageSize(int64)           //设置每页显示大小
-	AddOrderItem(OrderItem)      // 设置排序条件
-	AddOrderItems([]OrderItem)   // 批量设置排序条件
-	GetOrderItemsString() string // 将排序条件拼接成字符串
-	Offset() int64               // 获取偏移量
-	GetPages() int64             // 获取总的分页数
-}
-
-type OrderItem struct {
-	column string // 需要排序的字段
-	asc    bool   // 是否正序排列,默认true
-}
-
-type BaseData struct {
-	Page *Page        `json:"page"`
-	List interface{} `json:"list"` // 查询数据列表
-}
-
-type Page struct {
-	Total    int64       `json:"total"`     // 总的记录数
-	Pages    int64       `json:"pages"`     //总页数
-	PageSize int64       `json:"page_size"` // 每页显示的大小
-	Current  int64       `json:"current"`   // 当前页
-	orders   []OrderItem `json:"orders"`    // 排序条件
-}
-
-type PageReq struct {
-	PageSize int64 `json:"page_size" form:"page_size,default=20"`
-	Current  int64 `json:"current" form:"current,default=1"`
-}
-
-func (b *BaseData) GetList() interface{} {
-	return b.List
-}
-
-func (b *BaseData) SetList(list interface{}) {
-	b.List = list
-}
-
-func (b *BaseData) GetPage() *Page {
-	return b.Page
-}
-func (b *BaseData) SetPage(page *Page) {
-	b.Page = page
-}
-
-func (page *Page) GetTotal() int64 {
-	return page.Total
-}
-
-func (page *Page) SetTotal(total int64) {
-	page.Total = total
-	page.SetPages()
-}
-
-func (page *Page) GetCurrent() int64 {
-	return page.Current
-}
-
-func (page *Page) SetCurrent(current int64) {
-	page.Current = current
-}
-
-func (page *Page) GetPageSize() int64 {
-	return page.PageSize
-}
-func (page *Page) SetPageSize(size int64) {
-	page.PageSize = size
-}
-
-func (page *Page) AddOrderItem(orderItem OrderItem) {
-	page.orders = append(page.orders, orderItem)
-}
-
-func (page *Page) AddOrderItems(orderItems []OrderItem) {
-	page.orders = append(page.orders, orderItems...)
-}
-
-func (page *Page) GetOrderItemsString() string {
-	arr := make([]string, 0)
-	var order string
-
-	for _, val := range page.orders {
-		if val.asc {
-			order = ""
-		} else {
-			order = "desc"
-		}
-		arr = append(arr, fmt.Sprintf("%s %s", val.column, order))
-	}
-	return strings.Join(arr, ",")
-}
-
-func (page *Page) Offset() int64 {
-	if page.GetCurrent() > 0 {
-		return (page.GetCurrent() - 1) * page.GetPageSize()
-	} else {
-		return 0
-	}
-}
-
-func (page *Page) GetPages() int64 {
-	if page.GetPageSize() == 0 {
-		return 0
-	}
-	pages := page.GetTotal() / page.GetPageSize()
-	if page.GetTotal()%page.PageSize != 0 {
-		pages++
-	}
-
-	return pages
-}
-
-func (page *Page) SetPages() {
-	if page.GetPageSize() == 0 {
-		page.Pages = 0
-	} else {
-		pages := page.GetTotal() / page.GetPageSize()
-		if page.GetTotal()%page.PageSize != 0 {
-			pages++
-		}
-		page.Pages = pages
-	}
-}
-
-func BuildAsc(column string) OrderItem {
-	return OrderItem{column: column, asc: true}
-}
-
-func BuildDesc(column string) OrderItem {
-	return OrderItem{column: column, asc: false}
-}
-
-func BuildAscs(columns ...string) []OrderItem {
-	items := make([]OrderItem, 0)
-	for _, val := range columns {
-		items = append(items, BuildAsc(val))
-	}
-	return items
-}
-
-func BuildDescs(columns ...string) []OrderItem {
-	items := make([]OrderItem, 0)
-	for _, val := range columns {
-		items = append(items, BuildDesc(val))
-	}
-	return items
-}
-
-func NewPage(pageSize, current int64, orderItems ...OrderItem) *Page {
-	return &Page{PageSize: pageSize, Current: current, orders: orderItems}
-}

+ 0 - 13
models/base/time_base.go

@@ -1,13 +0,0 @@
-package base
-
-import "time"
-
-type TimeBase struct {
-	CreateTime time.Time `gorm:"autoCreateTime;column:create_time" json:"create_time"`       //创建时间
-	ModifyTime time.Time `gorm:"autoUpdateTime:milli;column:modify_time" json:"modify_time"` //最后更新时间
-}
-
-func (item *TimeBase) Set() {
-	item.CreateTime = time.Now()
-	item.ModifyTime = time.Now()
-}

+ 0 - 100
models/edb_info.go

@@ -1,100 +0,0 @@
-package models
-
-import (
-	"hongze/mysteel_watch/global"
-	"time"
-	"context"
-)
-
-type EdbInfo struct {
-	EdbInfoId        int    `orm:"column(edb_info_id);pk"`
-	SourceName       string `description:"来源名称"`
-	Source           int    `description:"来源id"`
-	EdbCode          string `description:"指标编码"`
-	EdbName          string `description:"指标名称"`
-	EdbNameSource    string `description:"指标名称来源"`
-	Frequency        string `description:"频率"`
-	Unit             string `description:"单位"`
-	StartDate        string `description:"起始日期"`
-	EndDate          string `description:"终止日期"`
-	ClassifyId       int    `description:"分类id"`
-	SysUserId        int
-	SysUserRealName  string
-	UniqueCode       string `description:"指标唯一编码"`
-	CreateTime       time.Time
-	ModifyTime       time.Time
-	MinValue         float64 `description:"指标最小值"`
-	MaxValue         float64 `description:"指标最大值"`
-	CalculateFormula string  `description:"计算公式"`
-	EdbType          int     `description:"指标类型:1:基础指标,2:计算指标"`
-	Sort             int     `description:"排序字段"`
-	MoveType         int     `description:"移动方式:1:领先(默认),2:滞后"`
-	MoveFrequency    string  `description:"移动频度"`
-	NoUpdate         int8    `description:"是否停止更新,0:继续更新;1:停止更新"`
-	ServerUrl        string  `description:"服务器地址"`
-
-	EdbInfoType int     `description:"指标类型,0:普通指标,1:预测指标"`
-	EdbNameEn   string  `description:"英文指标名称"`
-	UnitEn      string  `description:"英文单位"`
-	LatestDate  string  `description:"数据最新日期"`
-	LatestValue float64 `description:"数据最新值"`
-	ChartImage  string  `description:"图表图片"`
-}
-
-func (d *EdbInfo) GetEdbInfoItem(runMod, indexCode string) (item *EdbInfo, err error) {
-	if runMod == "release" {
-		err = global.MYSQL["hzdata"].WithContext(context.TODO()).Table("edb_info").
-			Where("edb_code = ?", indexCode).First(&item).Error
-		return
-	} else {
-		err = global.DEFAULT_MYSQL.WithContext(context.TODO()).Table("edb_info").
-			Where("edb_code = ?", indexCode).First(&item).Error
-		return
-	}
-}
-
-
-type EdbDataMysteelChemical struct {
-	EdbDataId     int `orm:"column(edb_data_id);pk"`
-	EdbInfoId     int
-	EdbCode       string
-	DataTime      string
-	Value         string
-	CreateTime    time.Time
-	ModifyTime    time.Time
-	DataTimestamp int64
-}
-
-func (d *EdbDataMysteelChemical) GetEdbInfoDataList(runMod string, indexCode string) (item []*EdbDataMysteelChemical, err error) {
-	if runMod == "release" {
-		err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
-			Where("index_code = ?", indexCode).Find(&item).Error
-		return
-	} else {
-		err = global.DEFAULT_MYSQL.WithContext(context.TODO()).Model(d).
-			Where("index_code = ?", indexCode).Find(&item).Error
-		return
-	}
-}
-
-// 新增
-func (r *EdbDataMysteelChemical) Add(runMod string, list []EdbDataMysteelChemical) (err error) {
-	if runMod == "release" {
-		err = global.MYSQL["hzdata"].Create(list).Error
-		return
-	} else {
-		err = global.DEFAULT_MYSQL.Create(list).Error
-		return
-	}
-}
-
-// 修改
-func (r *EdbDataMysteelChemical) Update(runMod string, updateCols []string) (err error) {
-	if runMod == "release" {
-		err = global.MYSQL["hzdata"].Model(r).Where("edb_data_id=?", r.EdbDataId).Select(updateCols).Updates(r).Error
-		return
-	} else {
-		err = global.DEFAULT_MYSQL.Model(r).Where("edb_data_id=?", r.EdbDataId).Select(updateCols).Updates(r).Error
-		return
-	}
-}

+ 21 - 164
models/index/index.go

@@ -1,63 +1,32 @@
 package index
 
 import (
-	"context"
-	"hongze/mysteel_watch/global"
-	"hongze/mysteel_watch/models/base"
-	"hongze/mysteel_watch/utils"
 	"time"
 )
 
 // 钢联化工指标数据
 type BaseFromMysteelChemicalIndex struct {
-	BaseFromMysteelChemicalIndexId int64     `gorm:"primaryKey;column:base_from_mysteel_chemical_index_id;type:int(11);not null" json:"base_from_mysteel_chemical_index_id"` //序号
-	IndexCode                      string    `gorm:"column:index_code" json:"index_code"`
-	IndexName                      string    `gorm:"column:index_name" json:"index_name"`
-	Unit                           string    `gorm:"column:unit" json:"unit"`
-	Source                         string    `gorm:"column:source" json:"source"`
-	Frequency                      string    `gorm:"column:frequency" json:"frequency"`
-	StartDate                      time.Time `gorm:"column:start_date" json:"start_date"`
-	EndDate                        time.Time `gorm:"column:end_date" json:"end_date"`
-	Describe                       string    `gorm:"column:describe" json:"describe"`
-	UpdateWeek                     string    `gorm:"column:update_week" json:"update_week"`
-	UpdateTime                     string    `gorm:"column:update_time" json:"update_time"`
-	UpdateTime2                    string    `gorm:"column:update_time2" json:"update_time2"`
-	SysUserId                      int       `gorm:"column:sys_user_id" json:"sys_user_id"`
-	SysUserRealName                string    `gorm:"column:sys_user_real_name" json:"sys_user_real_name"`
-	FilePath                       string    `gorm:"column:file_path" json:"file_path"`
-	MergeFilePath                  string    `gorm:"column:merge_file_path" json:"merge_file_path"`
-	FileIndex                      int       `gorm:"column:file_index" json:"file_index"`
-	MergeUpdateWeek                string    `gorm:"column:merge_update_week" json:"merge_update_week"`
-	UpdateDate                     string    `gorm:"column:update_date" json:"update_date"`
-	base.TimeBase
-}
-
-// TableName get sql table name.获取数据库表名
-func (r *BaseFromMysteelChemicalIndex) TableName() string {
-	return "base_from_mysteel_chemical_index"
-}
-
-// 新增
-func (r *BaseFromMysteelChemicalIndex) Add(runMod string) (err error) {
-	if runMod == "release" {
-		err = global.MYSQL["hzdata"].Create(r).Error
-		return
-	} else {
-		err = global.DEFAULT_MYSQL.Create(r).Error
-		return
-	}
-}
-
-// 修改
-func (r *BaseFromMysteelChemicalIndex) Update(runMod string, updateCols []string) (err error) {
-	if runMod == "release" {
-		err = global.MYSQL["hzdata"].Model(r).Where("index_code=?", r.IndexCode).Select(updateCols).Updates(r).Error
-		return
-	} else {
-		err = global.DEFAULT_MYSQL.Model(r).Where("index_code=?", r.IndexCode).Select(updateCols).Updates(r).Error
-		return
-	}
-
+	BaseFromMysteelChemicalIndexId int64     `gorm:"primaryKey;column:base_from_mysteel_chemical_index_id;type:int(11);not null"` //序号
+	IndexCode                      string    `gorm:"column:index_code"`
+	IndexName                      string    `gorm:"column:index_name"`
+	Unit                           string    `gorm:"column:unit"`
+	Source                         string    `gorm:"column:source"`
+	Frequency                      string    `gorm:"column:frequency"`
+	StartDate                      time.Time `gorm:"column:start_date"`
+	EndDate                        time.Time `gorm:"column:end_date"`
+	Describe                       string    `gorm:"column:describe"`
+	UpdateWeek                     string    `gorm:"column:update_week"`
+	UpdateTime                     string    `gorm:"column:update_time"`
+	UpdateTime2                    string    `gorm:"column:update_time2"`
+	SysUserId                      int       `gorm:"column:sys_user_id"`
+	SysUserRealName                string    `gorm:"column:sys_user_real_name"`
+	FilePath                       string    `gorm:"column:file_path"`
+	MergeFilePath                  string    `gorm:"column:merge_file_path"`
+	FileIndex                      int       `gorm:"column:file_index"`
+	MergeUpdateWeek                string    `gorm:"column:merge_update_week"`
+	UpdateDate                     string    `gorm:"column:update_date"`
+	CreateTime                     time.Time `gorm:"autoCreateTime;column:create_time"`       //创建时间
+	ModifyTime                     time.Time `gorm:"autoUpdateTime:milli;column:modify_time"` //最后更新时间
 }
 
 type IndexAddReq struct {
@@ -66,118 +35,6 @@ type IndexAddReq struct {
 	RunMode    string `description:"运行环境:debug:测试(默认),release:生产" json:"RunMode"` //更新周期
 }
 
-func (d *BaseFromMysteelChemicalIndex) GetIndexItem(runMod, indexCode string) (item *BaseFromMysteelChemicalIndex, err error) {
-	if runMod == "release" {
-		err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
-			Where("index_code = ?", indexCode).First(&item).Error
-		return
-	} else {
-		err = global.DEFAULT_MYSQL.WithContext(context.TODO()).Model(d).
-			Where("index_code = ?", indexCode).First(&item).Error
-		return
-	}
-}
-
-type IndexDeleteReq struct {
-	IndexCode string `json:"IndexCode" binding:"required"` //指标编码
-}
-
-func (d *BaseFromMysteelChemicalIndex) GetIndexCreate() (item []*BaseFromMysteelChemicalIndex, err error) {
-	endTime := time.Now().Add(-2 * time.Minute).Format(utils.FormatDateTime)
-	err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
-		Where("index_name = '' AND create_time<=? ", endTime).First(&item).Error
-
-	//Where("index_name = '' AND create_time<=? ", endTime).Find(&item).Error
-	return
-}
-
-func (d *BaseFromMysteelChemicalIndex) GetIndexRefreshAll() (item []*BaseFromMysteelChemicalIndex, err error) {
-	err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).Find(&item).Error
-	return
-}
-
-// GetIndexRefreshAllByMergeFile 根据合并文件去分组查询需要刷新的文件
-func (d *BaseFromMysteelChemicalIndex) GetIndexRefreshAllByMergeFile() (item []*BaseFromMysteelChemicalIndex, err error) {
-	err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).Where("merge_file_path != ? AND base_from_mysteel_chemical_classify_id NOT IN(54,55,56,57) ", "").
-		Group("merge_file_path").Find(&item).Error
-	return
-}
-
-func (d *BaseFromMysteelChemicalIndex) GetIndexRefreshWeek(nowWeekZn, startTime, endTime string) (item []*BaseFromMysteelChemicalIndex, err error) {
-	where := `update_week = ? AND ((update_time >=? AND update_time<=?) OR (update_time2 >=? AND update_time2<=?)) `
-	err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).Where(where, nowWeekZn, startTime, endTime, startTime, endTime).Find(&item).Error
-	//err = global.DEFAULT_MYSQL.WithContext(context.TODO()).Model(d).Where(where, nowWeekZn, startTime, endTime, startTime, endTime).Find(&item).Error
-	return
-}
-
-func (d *BaseFromMysteelChemicalIndex) GetIndexByFrequency(frequency string) (item []*BaseFromMysteelChemicalIndex, err error) {
-	err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).Where("frequency=? AND merge_file_path='' ", frequency).Find(&item).Error
-	return
-}
-
-func (d *BaseFromMysteelChemicalIndex) GetIndexByFrequencyCount(frequency string) (total int64, err error) {
-	err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
-		Where("frequency=? ", frequency).
-		Count(&total).Error
-	return
-}
-
-func (d *BaseFromMysteelChemicalIndex) GetIndexByFrequencyPage(frequency string, offset, limit int) (item []*BaseFromMysteelChemicalIndex, err error) {
-	err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
-		Where("frequency=? ", frequency).
-		Offset(offset).
-		Limit(limit).
-		Scan(&item).Error
-	return
-}
-
-// GetNoMergeIndexByFrequencyPage 获取未合并的指标列表
-func (d *BaseFromMysteelChemicalIndex) GetNoMergeIndexByFrequencyPage(frequency string, limit int) (item []*BaseFromMysteelChemicalIndex, err error) {
-	err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
-		Where("frequency=? AND merge_file_path = ?", frequency, "").
-		//Offset(offset).
-		Limit(limit).
-		Scan(&item).Error
-	return
-}
-
-// GetIndexByFrequencyListByMergeFilePath 根据指标频度+合并指标的路径 获取指标列表
-func (d *BaseFromMysteelChemicalIndex) GetIndexByFrequencyListByMergeFilePath(frequency, mergeFilePath string) (item []*BaseFromMysteelChemicalIndex, err error) {
-	err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
-		Where("frequency=? AND merge_file_path = ?", frequency, mergeFilePath).
-		Scan(&item).Error
-	return
-}
-
-func (d *BaseFromMysteelChemicalIndex) GetIndexCountByMergeFilePath(mergeFilePath string) (total int64, err error) {
-	err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
-		Where("merge_file_path=?", mergeFilePath).
-		Count(&total).Error
-	return
-}
-
-func (d *BaseFromMysteelChemicalIndex) GetIndexLatestMergeFilePath(frequency string) (item *BaseFromMysteelChemicalIndex, err error) {
-	err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
-		Where("frequency=? AND merge_file_path<>'' ", frequency).
-		Order("ORDER BY base_from_mysteel_chemical_index_id ASC").
-		First(&item).Error
-	return
-}
-
 type IndexRefreshReq struct {
 	MergeFilePath string `json:"MergeFilePath" binding:"required"` //指标编码
 }
-
-// GetIndexRefreshAllByMergeFile 根据合并文件去分组查询需要刷新的文件
-func (d *BaseFromMysteelChemicalIndex) GetIndexRefreshMethanolByMergeFile() (item []*BaseFromMysteelChemicalIndex, err error) {
-	err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).Where("merge_file_path != ? AND base_from_mysteel_chemical_classify_id IN(54,55,56,57) ", "").
-		Group("merge_file_path").Find(&item).Error
-	return
-}
-
-// GetIndexRefreshAllByMergeFile 根据合并文件去分组查询需要刷新的文件
-func (d *BaseFromMysteelChemicalIndex) GetIndexRefreshMethanolByTimely() (item []*BaseFromMysteelChemicalIndex, err error) {
-	err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).Where("merge_file_path != ? AND is_refresh=1 ", "").
-		Group("merge_file_path").Find(&item).Error
-	return
-}

+ 0 - 58
models/index/index_data.go

@@ -1,58 +0,0 @@
-package index
-
-import (
-	"context"
-	"hongze/mysteel_watch/global"
-	"hongze/mysteel_watch/models/base"
-	"time"
-)
-
-// 钢联化工指标数据
-type BaseFromMysteelChemicalData struct {
-	BaseFromMysteelChemicalDataId  int64     `gorm:"primaryKey;column:base_from_mysteel_chemical_data_id" json:"base_from_mysteel_chemical_data_id"` //序号
-	BaseFromMysteelChemicalIndexId int64     `gorm:"column:base_from_mysteel_chemical_index_id" json:"base_from_mysteel_chemical_index_id"`
-	IndexCode                      string    `gorm:"column:index_code" json:"index_code"`
-	DataTime                       time.Time `gorm:"column:data_time" json:"data_time"`
-	Value                          string    `gorm:"column:value" json:"value"`
-	UpdateDate                     string    `gorm:"column:update_date" json:"update_date"`
-	base.TimeBase
-}
-
-// TableName get sql table name.获取数据库表名
-func (r *BaseFromMysteelChemicalData) TableName() string {
-	return "base_from_mysteel_chemical_data"
-}
-
-// 新增
-func (r *BaseFromMysteelChemicalData) Add(runMod string, list []BaseFromMysteelChemicalData) (err error) {
-	if runMod == "release" {
-		err = global.MYSQL["hzdata"].Create(list).Error
-		return
-	} else {
-		err = global.DEFAULT_MYSQL.Create(list).Error
-		return
-	}
-}
-
-// 修改
-func (r *BaseFromMysteelChemicalData) Update(runMod string, updateCols []string) (err error) {
-	if runMod == "release" {
-		err = global.MYSQL["hzdata"].Model(r).Where("base_from_mysteel_chemical_data_id=?", r.BaseFromMysteelChemicalDataId).Select(updateCols).Updates(r).Error
-		return
-	} else {
-		err = global.DEFAULT_MYSQL.Model(r).Where("base_from_mysteel_chemical_data_id=?", r.BaseFromMysteelChemicalDataId).Select(updateCols).Updates(r).Error
-		return
-	}
-}
-
-func (d *BaseFromMysteelChemicalData) GetIndexDataList(runMod string, indexCode string) (item []*BaseFromMysteelChemicalData, err error) {
-	if runMod == "release" {
-		err = global.MYSQL["hzdata"].WithContext(context.TODO()).Model(d).
-			Where("index_code = ?", indexCode).Find(&item).Error
-		return
-	} else {
-		err = global.DEFAULT_MYSQL.WithContext(context.TODO()).Model(d).
-			Where("index_code = ?", indexCode).Find(&item).Error
-		return
-	}
-}

+ 8 - 5
services/alarm_msg/alarm_msg.go

@@ -12,14 +12,17 @@ var (
 	AlarmMsgUrl = "http://47.102.213.75:8606/api/alarm/send"
 )
 
-//projectName-项目名称
-//runMode-运行模式
-//msgBody-消息内容
-//level:消息基本,1:提示消息,2:警告消息,3:严重错误信息,默认为1 提示消息
+// projectName-项目名称
+// runMode-运行模式
+// msgBody-消息内容
+// level:消息基本,1:提示消息,2:警告消息,3:严重错误信息,默认为1 提示消息
 func SendAlarmMsg(msgBody string, level int) {
+	if global.CONFIG.Serve.RunMode != "release" {
+		return
+	}
 	params := make(map[string]interface{})
 	params["ProjectName"] = utils.APPNAME
-	params["RunMode"] = "release"//global.CONFIG.Serve.RunMode
+	params["RunMode"] = "release" //global.CONFIG.Serve.RunMode
 	params["MsgBody"] = msgBody
 	params["Level"] = level
 	param, err := json.Marshal(params)

+ 30 - 25
services/index.go

@@ -5,9 +5,9 @@ import (
 	"fmt"
 	"hongze/mysteel_watch/cache"
 	"hongze/mysteel_watch/global"
-	"hongze/mysteel_watch/models/index"
 	"hongze/mysteel_watch/services/alarm_msg"
 	"hongze/mysteel_watch/utils"
+	"hongze/mysteel_watch/watch"
 	"os"
 	"strings"
 	"sync"
@@ -29,8 +29,9 @@ func IndexCreateCheck() (err error) {
 		checkLock.Unlock()
 	}()
 	fmt.Println("IndexCreateCheck")
-	indexObj := new(index.BaseFromMysteelChemicalIndex)
-	list, err := indexObj.GetIndexCreate()
+	//indexObj := new(index.BaseFromMysteelChemicalIndex)
+	//list, err := indexObj.GetIndexCreate()
+	list, err := watch.GetIndexCreate()
 	if err != nil {
 		return
 	}
@@ -59,7 +60,8 @@ func IndexCreateCheck() (err error) {
 			AddIndexRefreshToLpush(v.FilePath)
 		} else {
 			fmt.Println("IndexCreate:" + v.IndexCode)
-			saveFilePath, err := IndexCreate(v)
+			//saveFilePath, err := IndexCreate(v)
+			saveFilePath, err := IndexCreate(v.UpdateWeek, v.IndexCode)
 			if err != nil {
 				fmt.Println("IndexCreate Err:" + err.Error())
 				go alarm_msg.SendAlarmMsg(utils.APPNAME+" 指标数据未生成检测失败:"+err.Error(), 3)
@@ -78,24 +80,25 @@ func IndexCreateCheck() (err error) {
 	return nil
 }
 
-func IndexCreate(item *index.BaseFromMysteelChemicalIndex) (saveFilePath string, err error) {
-	item.UpdateWeek = utils.GetUpdateWeekEn(item.UpdateWeek)
+// func IndexCreate(item *index.BaseFromMysteelChemicalIndex) (saveFilePath string, err error) {
+func IndexCreate(updateWeek, indexCode string) (saveFilePath string, err error) {
+	updateWeek = utils.GetUpdateWeekEn(updateWeek)
 	global.LOG.Info("task IndexCreate:" + time.Now().Format(utils.FormatDateTime))
 	runMode := "release"
 	//fileName := req.IndexName + "_" + req.IndexCode + ".xlsx"
 	var fileName string
-	if item.UpdateWeek != "" {
-		fileName = item.IndexCode + "_" + item.UpdateWeek + "_" + runMode + ".xlsx" //保存的文件名称
+	if updateWeek != "" {
+		fileName = indexCode + "_" + updateWeek + "_" + runMode + ".xlsx" //保存的文件名称
 	} else {
-		fileName = item.IndexCode + "_" + runMode + ".xlsx" //保存的文件名称
+		fileName = indexCode + "_" + runMode + ".xlsx" //保存的文件名称
 	}
-	filePath := utils.IndexSaveDir + fileName
+	filePath := global.CONFIG.Serve.IndexSaveDir + fileName
 	if utils.FileIsExist(filePath) {
 		saveFilePath = filePath
 		return
 		os.Remove(filePath)
 	}
-	templatePath := utils.IndexSaveDir + "index_template.xlsx"
+	templatePath := global.CONFIG.Serve.IndexSaveDir + "index_template.xlsx"
 	templateFile, err := excelize.OpenFile(templatePath)
 	if err != nil {
 		fmt.Println("OpenFile template err:" + err.Error())
@@ -107,7 +110,7 @@ func IndexCreate(item *index.BaseFromMysteelChemicalIndex) (saveFilePath string,
 	}()
 
 	startDate := "1990-01-01"
-	commentStr := `"BlankValue":"0","CanMark":true,"ChartLineType":"0","DateBlock":0,"DateBlockCount":1,"DateFormat":0,"DateTimeTag":"","EndDate":"","ExportType":0,"HasDescription":true,"HasEmptyRows":false,"HasFrequency":true,"HasIndexID":true,"HasLastDate":true,"HasSourceName":true,"HasTimeInterval":true,"HasUnit":true,"HasUpdateDate":true,"IsCreateChart":false,"IsDataSort":true,"IsNewSheet":false,"IsNewWorkbook":false,"Models":[{"DataFormat":0,"DataStartDate":"` + startDate + `","DefineName":"","DefineUnit":"","DisplayIndexCode":"` + item.IndexCode + `","IndexCode":"` + item.IndexCode + `","IndexFormula":"` + item.IndexCode + `","PointValue":0,"UnionStart":""}],"Position":"A1","RangeData":"A2:B280","ShowBlankLines":false,"StartDate":"","Transpose":false,"UpdateMode":1,"lookModel":{"IsLast":false,"LookValue":0,"lookType":0},"ver":3}
+	commentStr := `"BlankValue":"0","CanMark":true,"ChartLineType":"0","DateBlock":0,"DateBlockCount":1,"DateFormat":0,"DateTimeTag":"","EndDate":"","ExportType":0,"HasDescription":true,"HasEmptyRows":false,"HasFrequency":true,"HasIndexID":true,"HasLastDate":true,"HasSourceName":true,"HasTimeInterval":true,"HasUnit":true,"HasUpdateDate":true,"IsCreateChart":false,"IsDataSort":true,"IsNewSheet":false,"IsNewWorkbook":false,"Models":[{"DataFormat":0,"DataStartDate":"` + startDate + `","DefineName":"","DefineUnit":"","DisplayIndexCode":"` + indexCode + `","IndexCode":"` + indexCode + `","IndexFormula":"` + indexCode + `","PointValue":0,"UnionStart":""}],"Position":"A1","RangeData":"A2:B280","ShowBlankLines":false,"StartDate":"","Transpose":false,"UpdateMode":1,"lookModel":{"IsLast":false,"LookValue":0,"lookType":0},"ver":3}
 `
 	commentMap := make(map[string]interface{})
 	commentMap["author"] = "{"
@@ -178,8 +181,9 @@ func IndexCreate(item *index.BaseFromMysteelChemicalIndex) (saveFilePath string,
 
 func IndexRefreshAll() {
 	fmt.Println("IndexCreateCheck")
-	indexObj := new(index.BaseFromMysteelChemicalIndex)
-	list, err := indexObj.GetIndexRefreshAllByMergeFile()
+	//indexObj := new(index.BaseFromMysteelChemicalIndex)
+	//list, err := indexObj.GetIndexRefreshAllByMergeFile()
+	list, err := watch.GetIndexRefreshAllByMergeFile()
 	if err != nil {
 		fmt.Println("GetIndexRefreshAll Err:" + err.Error())
 		return
@@ -228,8 +232,9 @@ func IndexRefreshAll() {
 
 func IndexRefreshMethanol() {
 	fmt.Println("IndexRefreshMethanol")
-	indexObj := new(index.BaseFromMysteelChemicalIndex)
-	list, err := indexObj.GetIndexRefreshMethanolByMergeFile()
+	//indexObj := new(index.BaseFromMysteelChemicalIndex)
+	//list, err := indexObj.GetIndexRefreshMethanolByMergeFile()
+	list, err := watch.GetIndexRefreshMethanolByMergeFile()
 	if err != nil {
 		fmt.Println("GetIndexRefreshAll Err:" + err.Error())
 		return
@@ -276,14 +281,13 @@ func IndexRefreshMethanol() {
 	return
 }
 
-
-
 func IndexRefreshTimely() {
 	fmt.Println("IndexRefreshTimely")
 	go alarm_msg.SendAlarmMsg(utils.APPNAME+" 及时刷新指标", 3)
 
-	indexObj := new(index.BaseFromMysteelChemicalIndex)
-	list, err := indexObj.GetIndexRefreshMethanolByTimely()
+	//indexObj := new(index.BaseFromMysteelChemicalIndex)
+	//list, err := indexObj.GetIndexRefreshMethanolByTimely()
+	list, err := watch.GetIndexRefreshMethanolByTimely()
 	if err != nil {
 		fmt.Println("GetIndexRefreshAll Err:" + err.Error())
 		return
@@ -330,22 +334,22 @@ func IndexRefreshTimely() {
 	return
 }
 
-
 var lock sync.RWMutex
 
-//刷新周度指标数据
+// 刷新周度指标数据
 func IndexRefreshWeek() {
 	lock.Lock()
 	nowWeek := time.Now().Weekday().String()
 	nowWeekZn := utils.GetWeekZn(nowWeek)
 	fmt.Println("nowWeekZn:" + nowWeekZn)
 
-	indexObj := new(index.BaseFromMysteelChemicalIndex)
+	//indexObj := new(index.BaseFromMysteelChemicalIndex)
 
 	startTime := time.Now().Add(-1 * time.Minute).Format(FormatTimeStr)
 	endTime := time.Now().Add(1 * time.Minute).Format(FormatTimeStr)
 
-	list, err := indexObj.GetIndexRefreshWeek(nowWeekZn, startTime, endTime)
+	//list, err := indexObj.GetIndexRefreshWeek(nowWeekZn, startTime, endTime)
+	list, err := watch.GetIndexRefreshWeek(nowWeekZn, startTime, endTime)
 	if err != nil {
 		fmt.Println("GetIndexRefreshWeek Err:" + err.Error())
 		return
@@ -436,7 +440,8 @@ func GetComment(filePath string) string {
 }
 
 var pushLock sync.RWMutex
-//刷新周度指标数据
+
+// 刷新周度指标数据
 func AddIndexRefreshToLpush(filePath string) {
 	pushLock.Lock()
 	cache.IndexAutoRefresh(filePath)

+ 159 - 38
services/index_merge.go

@@ -3,6 +3,7 @@ package services
 import (
 	"encoding/json"
 	"fmt"
+	"hongze/mysteel_watch/global"
 	"hongze/mysteel_watch/models/index"
 	"hongze/mysteel_watch/utils"
 	"hongze/mysteel_watch/watch"
@@ -41,12 +42,13 @@ func Merge() {
 func IndexYearMerge() {
 	frequency := "年度"
 	fileName := "year" + ".xlsx" //保存的文件名称
-	yearIndexFilePath := utils.IndexMsergeSaveDir + fileName
+	yearIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName
 
 	var err error
 
-	indexObj := new(index.BaseFromMysteelChemicalIndex)
-	yearList, err := indexObj.GetIndexByFrequency(frequency)
+	//indexObj := new(index.BaseFromMysteelChemicalIndex)
+	//yearList, err := indexObj.GetIndexByFrequency(frequency)
+	yearList, err := watch.GetIndexByFrequency(frequency)
 	if err != nil {
 		fmt.Println("GetIndexByFrequency Err:" + err.Error())
 		return
@@ -56,7 +58,8 @@ func IndexYearMerge() {
 		return
 	}
 
-	commentResult, err := GetIndexComment(yearIndexFilePath, yearList, 1)
+	//commentResult, err := GetIndexComment(yearIndexFilePath, yearList, 1)
+	commentResult, err := GetIndexCommentV2(yearIndexFilePath, yearList, 1)
 	if err != nil {
 		fmt.Println("GetIndexComment Err:" + err.Error())
 		return
@@ -77,7 +80,7 @@ func IndexYearMerge() {
 		}
 		fileObj.Close()
 	} else { //新增文件
-		templatePath := utils.IndexSaveDir + "index_template.xlsx"
+		templatePath := global.CONFIG.Serve.IndexSaveDir + "index_template.xlsx"
 		templateFile, err := excelize.OpenFile(templatePath)
 		if err != nil {
 			fmt.Println("打开文件失败,Err:" + err.Error())
@@ -101,12 +104,13 @@ func IndexYearMerge() {
 func IndexSeasonMerge() {
 	frequency := "季度"
 	fileName := "season" + ".xlsx" //保存的文件名称
-	seasonIndexFilePath := utils.IndexMsergeSaveDir + fileName
+	seasonIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName
 
 	var err error
 
-	indexObj := new(index.BaseFromMysteelChemicalIndex)
-	seasonList, err := indexObj.GetIndexByFrequency(frequency)
+	//indexObj := new(index.BaseFromMysteelChemicalIndex)
+	//seasonList, err := indexObj.GetIndexByFrequency(frequency)
+	seasonList, err := watch.GetIndexByFrequency(frequency)
 	if err != nil {
 		fmt.Println("GetIndexByFrequency Err:" + err.Error())
 		return
@@ -116,7 +120,8 @@ func IndexSeasonMerge() {
 		return
 	}
 
-	commentResult, err := GetIndexComment(seasonIndexFilePath, seasonList, 1)
+	//commentResult, err := GetIndexComment(seasonIndexFilePath, seasonList, 1)
+	commentResult, err := GetIndexCommentV2(seasonIndexFilePath, seasonList, 1)
 	if err != nil {
 		fmt.Println("GetIndexComment Err:" + err.Error())
 		return
@@ -137,7 +142,7 @@ func IndexSeasonMerge() {
 		}
 		fileObj.Close()
 	} else { //新增文件
-		templatePath := utils.IndexSaveDir + "index_template.xlsx"
+		templatePath := global.CONFIG.Serve.IndexSaveDir + "index_template.xlsx"
 		templateFile, err := excelize.OpenFile(templatePath)
 		if err != nil {
 			fmt.Println("打开文件失败,Err:" + err.Error())
@@ -183,7 +188,7 @@ func IndexSeasonMerge() {
 //	}
 //
 //	fileName := filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称
-//	monthIndexFilePath := utils.IndexMsergeSaveDir + fileName
+//	monthIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName
 //
 //	indexTotal, err := indexObj.GetIndexCountByMergeFilePath(monthIndexFilePath)
 //	if err != nil {
@@ -204,7 +209,7 @@ func IndexSeasonMerge() {
 //		offset := (i - 1) * pageSize
 //
 //		fileName = filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称
-//		monthIndexFilePath := utils.IndexMsergeSaveDir + fileName
+//		monthIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName
 //		fmt.Println(monthIndexFilePath)
 //
 //		fmt.Println(offset, pageSize)
@@ -235,7 +240,7 @@ func IndexSeasonMerge() {
 //			}
 //			fileObj.Close()
 //		} else { //新增文件
-//			templatePath := utils.IndexSaveDir + "index_template.xlsx"
+//			templatePath := global.CONFIG.Serve.IndexSaveDir + "index_template.xlsx"
 //			templateFile, err := excelize.OpenFile(templatePath)
 //			if err != nil {
 //				fmt.Println("打开文件失败,Err:" + err.Error())
@@ -291,7 +296,7 @@ func IndexMonthMerge() {
 //	}
 //
 //	fileName := filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称
-//	monthIndexFilePath := utils.IndexMsergeSaveDir + fileName
+//	monthIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName
 //
 //	indexTotal, err := indexObj.GetIndexCountByMergeFilePath(monthIndexFilePath)
 //	if err != nil {
@@ -312,7 +317,7 @@ func IndexMonthMerge() {
 //		offset := (i - 1) * pageSize
 //
 //		fileName = filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称
-//		monthIndexFilePath := utils.IndexMsergeSaveDir + fileName
+//		monthIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName
 //		fmt.Println(monthIndexFilePath)
 //
 //		fmt.Println(offset, pageSize)
@@ -343,7 +348,7 @@ func IndexMonthMerge() {
 //			}
 //			fileObj.Close()
 //		} else { //新增文件
-//			templatePath := utils.IndexSaveDir + "index_template.xlsx"
+//			templatePath := global.CONFIG.Serve.IndexSaveDir + "index_template.xlsx"
 //			templateFile, err := excelize.OpenFile(templatePath)
 //			if err != nil {
 //				fmt.Println("打开文件失败,Err:" + err.Error())
@@ -418,7 +423,7 @@ func IndexWeekMerge() {
 //	}
 //
 //	fileName := filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称
-//	maxMergeIndexFilePath := utils.IndexMsergeSaveDir + fileName
+//	maxMergeIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName
 //
 //	// 根据文件下标获取该文件下标已经存在多少的指标
 //	indexTotal, err := indexObj.GetIndexCountByMergeFilePath(maxMergeIndexFilePath)
@@ -446,7 +451,7 @@ func IndexWeekMerge() {
 //		//offset := (i - 1) * pageSize
 //
 //		fileName = filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称
-//		mergeIndexFilePath := utils.IndexMsergeSaveDir + fileName
+//		mergeIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName
 //		fmt.Println(mergeIndexFilePath)
 //
 //		var list []*index.BaseFromMysteelChemicalIndex
@@ -499,7 +504,7 @@ func IndexWeekMerge() {
 //			}
 //			fileObj.Close()
 //		} else { //新增文件
-//			templatePath := utils.IndexSaveDir + "index_template.xlsx"
+//			templatePath := global.CONFIG.Serve.IndexSaveDir + "index_template.xlsx"
 //			templateFile, err := excelize.OpenFile(templatePath)
 //			if err != nil {
 //				fmt.Println("打开文件失败,Err:" + err.Error())
@@ -525,7 +530,7 @@ func IndexWeekMerge() {
 // @params pageSize int 每个excel表中的指标数量
 func indexMerge(frequency, filePre string, pageSize int) (err error) {
 	firstIndexCount := pageSize //第一个添加的excel表需要的指标数
-	indexObj := new(index.BaseFromMysteelChemicalIndex)
+	//indexObj := new(index.BaseFromMysteelChemicalIndex)
 
 	frequencyReq := watch.GetMaxFileIndexReq{
 		Frequency: frequency,
@@ -550,10 +555,11 @@ func indexMerge(frequency, filePre string, pageSize int) (err error) {
 	}
 
 	fileName := filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称
-	maxMergeIndexFilePath := utils.IndexMsergeSaveDir + fileName
+	maxMergeIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName
 
 	// 根据文件下标获取该文件下标已经存在多少的指标
-	indexTotal, err := indexObj.GetIndexCountByMergeFilePath(maxMergeIndexFilePath)
+	//indexTotal, err := indexObj.GetIndexCountByMergeFilePath(maxMergeIndexFilePath)
+	indexTotal, err := watch.GetIndexCountByMergeFilePath(maxMergeIndexFilePath)
 	if err != nil {
 		fmt.Println("GetIndexCountByMergeFilePath Err:" + err.Error())
 		return
@@ -584,7 +590,7 @@ func indexMerge(frequency, filePre string, pageSize int) (err error) {
 		//offset := (i - 1) * pageSize
 
 		fileName = filePre + "_" + strconv.Itoa(maxFileIndex) + ".xlsx" //保存的文件名称
-		mergeIndexFilePath := utils.IndexMsergeSaveDir + fileName
+		mergeIndexFilePath := global.CONFIG.Serve.IndexMergeSaveDir + fileName
 		fmt.Println(mergeIndexFilePath)
 
 		//var list []*index.BaseFromMysteelChemicalIndex
@@ -618,7 +624,7 @@ func indexMerge(frequency, filePre string, pageSize int) (err error) {
 		//	pageList = append(pageList, list...)
 		//}
 
-		commentResult, tmpErr := GetIndexComment(mergeIndexFilePath, pageList, maxFileIndex)
+		commentResult, tmpErr := GetIndexCommentV2(mergeIndexFilePath, pageList, maxFileIndex)
 		if tmpErr != nil {
 			fmt.Println("GetIndexComment Err:" + tmpErr.Error())
 			err = tmpErr
@@ -641,7 +647,7 @@ func indexMerge(frequency, filePre string, pageSize int) (err error) {
 			}
 			fileObj.Close()
 		} else { //新增文件
-			templatePath := utils.IndexSaveDir + "index_template.xlsx"
+			templatePath := global.CONFIG.Serve.IndexSaveDir + "index_template.xlsx"
 			templateFile, tmpErr := excelize.OpenFile(templatePath)
 			if tmpErr != nil {
 				fmt.Println("打开文件失败,Err:" + tmpErr.Error())
@@ -666,8 +672,117 @@ func indexMerge(frequency, filePre string, pageSize int) (err error) {
 	return
 }
 
-func GetIndexComment(indexFilePath string, list []*index.BaseFromMysteelChemicalIndex, fileIndex int) (commentResult string, err error) {
-	runMode := "release"
+//func GetIndexComment(indexFilePath string, list []*index.BaseFromMysteelChemicalIndex, fileIndex int) (commentResult string, err error) {
+//	runMode := "release"
+//	indexInfo := new(IndexObj)
+//	if utils.FileIsExist(indexFilePath) { //文件存在
+//		fmt.Println("utils.FileIsExist")
+//		getCommentStr := GetComment(indexFilePath)
+//		fmt.Println(getCommentStr)
+//
+//		err = json.Unmarshal([]byte(getCommentStr), &indexInfo)
+//		if err != nil {
+//			fmt.Println("json.Unmarshal err:" + err.Error())
+//			return
+//		}
+//	} else { //文件不存在,
+//		indexInfo.BlankValue = "0"
+//		indexInfo.CanMark = true
+//		indexInfo.ChartLineType = "0"
+//		indexInfo.DateBlock = 0
+//		indexInfo.DateBlockCount = 1
+//		indexInfo.DateFormat = 0
+//		indexInfo.DateTimeTag = "637973605613980000"
+//		indexInfo.EndDate = ""
+//		indexInfo.ExportType = 0
+//		indexInfo.HasDescription = true
+//		indexInfo.HasEmptyRows = false
+//		indexInfo.HasFrequency = true
+//		indexInfo.HasIndexID = true
+//		indexInfo.HasLastDate = true
+//		indexInfo.HasSourceName = true
+//		indexInfo.HasTimeInterval = true
+//		indexInfo.HasUnit = true
+//		indexInfo.HasUpdateDate = true
+//		indexInfo.IsCreateChart = false
+//		indexInfo.IsDataSort = true
+//		indexInfo.IsNewSheet = false
+//		indexInfo.IsNewWorkbook = false
+//		indexInfo.Position = "A1"
+//		indexInfo.ShowBlankLines = false
+//		indexInfo.StartDate = ""
+//		indexInfo.Transpose = false
+//		indexInfo.UpdateMode = 1
+//		indexInfo.LookModel.IsLast = false
+//		indexInfo.LookModel.LookValue = 0
+//		indexInfo.LookModel.LookType = 0
+//		indexInfo.Ver = 3
+//	}
+//	modelsList := make([]IndexModels, 0)
+//	startDate := "1990-01-01"
+//
+//	indexObj := new(index.BaseFromMysteelChemicalIndex)
+//
+//	modelsList = append(modelsList, indexInfo.Models...)
+//
+//	for k, v := range list {
+//		fmt.Println(k, v)
+//		item := new(IndexModels)
+//		item.DataFormat = 0
+//		if v.IndexName == "" {
+//			item.DataStartDate = startDate
+//		} else {
+//			item.DataStartDate = v.StartDate.Format(utils.FormatDate)
+//		}
+//		item.DefineName = ""
+//		item.DefineUnit = ""
+//		item.DisplayIndexCode = v.IndexCode
+//		item.IndexCode = v.IndexCode
+//		item.IndexFormula = v.IndexCode
+//		item.PointValue = 0
+//		item.UnionStart = ""
+//		modelsList = append(modelsList, *item)
+//
+//		indexObj.IndexCode = v.IndexCode
+//		indexObj.MergeFilePath = indexFilePath
+//		indexObj.FileIndex = fileIndex
+//
+//		updateColsArr := make([]string, 0)
+//		updateColsArr = append(updateColsArr, "merge_file_path")
+//		updateColsArr = append(updateColsArr, "file_index")
+//
+//		err = indexObj.Update(runMode, updateColsArr)
+//		if err != nil {
+//			fmt.Println("indexObj.Update err:" + err.Error())
+//			return
+//		}
+//	}
+//
+//	indexInfo.Models = modelsList
+//
+//	indexStr, err := json.Marshal(indexInfo)
+//	if err != nil {
+//		fmt.Println("json.Marshal err:" + err.Error())
+//		return
+//	}
+//	text := string(indexStr)
+//	text = strings.Trim(text, "{")
+//
+//	commentMap := make(map[string]interface{})
+//	commentMap["author"] = "{"
+//	commentMap["text"] = text
+//	//commentMap["text"] = commentItem
+//
+//	commentJson, err := json.Marshal(commentMap)
+//	if err != nil {
+//		fmt.Println("json.Marshal err:" + err.Error())
+//	}
+//	commentResult = string(commentJson)
+//	return
+//}
+
+func GetIndexCommentV2(indexFilePath string, list []index.BaseFromMysteelChemicalIndex, fileIndex int) (commentResult string, err error) {
+	//runMode := "release"
 	indexInfo := new(IndexObj)
 	if utils.FileIsExist(indexFilePath) { //文件存在
 		fmt.Println("utils.FileIsExist")
@@ -715,7 +830,8 @@ func GetIndexComment(indexFilePath string, list []*index.BaseFromMysteelChemical
 	modelsList := make([]IndexModels, 0)
 	startDate := "1990-01-01"
 
-	indexObj := new(index.BaseFromMysteelChemicalIndex)
+	updateIndexes := make([]watch.UpdateIndexReq, 0)
+	updateCols := []string{"merge_file_path", "file_index"}
 
 	modelsList = append(modelsList, indexInfo.Models...)
 
@@ -737,17 +853,22 @@ func GetIndexComment(indexFilePath string, list []*index.BaseFromMysteelChemical
 		item.UnionStart = ""
 		modelsList = append(modelsList, *item)
 
-		indexObj.IndexCode = v.IndexCode
-		indexObj.MergeFilePath = indexFilePath
-		indexObj.FileIndex = fileIndex
-
-		updateColsArr := make([]string, 0)
-		updateColsArr = append(updateColsArr, "merge_file_path")
-		updateColsArr = append(updateColsArr, "file_index")
+		// 待更新的指标
+		var req watch.UpdateIndexReq
+		req.Item = new(index.BaseFromMysteelChemicalIndex)
+		req.Item.BaseFromMysteelChemicalIndexId = v.BaseFromMysteelChemicalIndexId
+		req.Item.IndexCode = v.IndexCode
+		req.Item.MergeFilePath = indexFilePath
+		req.Item.FileIndex = fileIndex
+		req.UpdateCols = updateCols
+		updateIndexes = append(updateIndexes, req)
+	}
 
-		err = indexObj.Update(runMode, updateColsArr)
-		if err != nil {
-			fmt.Println("indexObj.Update err:" + err.Error())
+	// 批量更新Index
+	if len(updateIndexes) > 0 {
+		e := watch.MultiUpdateIndex(updateIndexes)
+		if e != nil {
+			fmt.Println("UpdateIndexByIndexCode err: " + e.Error())
 			return
 		}
 	}

+ 1 - 1
services/server_check.go

@@ -6,7 +6,7 @@ import (
 )
 
 const (
-	ServerCheckUrl = "http://127.0.0.1:7007//mysteel_chemical/server"
+	ServerCheckUrl = "http://127.0.0.1:7007/mysteel_chemical/server"
 )
 
 func ServerCheck() {

+ 8 - 8
utils/index_files.go

@@ -1,10 +1,10 @@
 package utils
 
-const (
-	IndexSaveDir       = "D:\\mysteel_data\\"
-	IndexMsergeSaveDir = "D:\\mysteel_data\\merge\\"
-
-	//IndexSaveDir       = "/Users/hyc/Documents/rdluck/mysteel_data/"
-	//IndexMsergeSaveDir = "/Users/hyc/Documents/rdluck/mysteel_data/merge/"
-	//IndexMsergeSaveDir = "/Users/roc/go/src/hongze/mysteel_watch"
-)
+//const (
+//	IndexSaveDir      = "E:\\mysteel_data\\"
+//	IndexMergeSaveDir = "E:\\mysteel_data\\merge\\"
+//
+//	//IndexSaveDir       = "/Users/hyc/Documents/rdluck/mysteel_data/"
+//	//IndexMergeSaveDir = "/Users/hyc/Documents/rdluck/mysteel_data/merge/"
+//	//IndexMergeSaveDir = "/Users/roc/go/src/hongze/mysteel_watch"
+//)

+ 312 - 35
watch/edb_lib.go

@@ -23,35 +23,57 @@ type BaseResponse struct {
 	IsAddLog    bool `json:"-" description:"true 新增操作日志,false 不新增操作日志" `
 }
 
-// postRefreshEdbData 刷新指标数据
-func postRefreshEdbData(param map[string]interface{}) (resp *BaseResponse, err error) {
-	urlStr := "mysteel_chemical/refresh"
+type IndexesResponse struct {
+	Ret         int
+	Msg         string
+	ErrMsg      string
+	ErrCode     string
+	Data        []index.BaseFromMysteelChemicalIndex
+	Success     bool `description:"true 执行成功,false 执行失败"`
+	IsSendEmail bool `json:"-" description:"true 发送邮件,false 不发送邮件"`
+	IsAddLog    bool `json:"-" description:"true 新增操作日志,false 不新增操作日志" `
+}
 
-	if global.CONFIG.Serve.EdbLibUrl == `` {
-		err = errors.New("刷新未配置")
-		return
-	}
-	postUrl := global.CONFIG.Serve.EdbLibUrl + urlStr
-	postData, err := json.Marshal(param)
-	if err != nil {
-		return
-	}
-	result, err := HttpPost(postUrl, string(postData), "application/json")
-	if err != nil {
-		return
-	}
-	if result != nil {
-		global.LOG.Info(" Refresh Result: " + string(result))
-		err = json.Unmarshal(result, &resp)
-		if err != nil {
-			return
-		}
-		return resp, nil
-	}
-	return nil, err
+type IndexResponse struct {
+	Ret         int
+	Msg         string
+	ErrMsg      string
+	ErrCode     string
+	Data        index.BaseFromMysteelChemicalIndex
+	Success     bool `description:"true 执行成功,false 执行失败"`
+	IsSendEmail bool `json:"-" description:"true 发送邮件,false 不发送邮件"`
+	IsAddLog    bool `json:"-" description:"true 新增操作日志,false 不新增操作日志" `
 }
 
 // postRefreshEdbData 刷新指标数据
+//func postRefreshEdbData(param map[string]interface{}) (resp *BaseResponse, err error) {
+//	urlStr := "mysteel_chemical/refresh"
+//
+//	if global.CONFIG.Serve.EdbLibUrl == `` {
+//		err = errors.New("刷新未配置")
+//		return
+//	}
+//	postUrl := global.CONFIG.Serve.EdbLibUrl + urlStr
+//	postData, err := json.Marshal(param)
+//	if err != nil {
+//		return
+//	}
+//	result, err := HttpPost(postUrl, string(postData), "application/json")
+//	if err != nil {
+//		return
+//	}
+//	if result != nil {
+//		global.LOG.Info(" Refresh Result: " + string(result))
+//		err = json.Unmarshal(result, &resp)
+//		if err != nil {
+//			return
+//		}
+//		return resp, nil
+//	}
+//	return nil, err
+//}
+
+// postHandleMysteelIndex 处理指标和指标数据
 func postHandleMysteelIndex(req *HandleMysteelIndexReq) (resp *BaseResponse, err error) {
 	urlStr := "/mysteel_chemical/handle/mysteel/index"
 
@@ -69,7 +91,7 @@ func postHandleMysteelIndex(req *HandleMysteelIndexReq) (resp *BaseResponse, err
 		return
 	}
 	if result != nil {
-		global.LOG.Info(" Refresh Result: " + string(result))
+		global.LOG.Info(" postHandleMysteelIndex Result: " + string(result))
 		err = json.Unmarshal(result, &resp)
 		if err != nil {
 			return
@@ -85,7 +107,7 @@ type GetMaxFileIndexReq struct {
 }
 
 // GetNoMergeIndexByFrequencyCount 获取未合并的指标总数量
-func GetNoMergeIndexByFrequencyCount(req GetMaxFileIndexReq) (total int, err error) {
+func GetNoMergeIndexByFrequencyCount(req GetMaxFileIndexReq) (total float64, err error) {
 	urlStr := "/mysteel_chemical/getNoMergeIndexByFrequencyCount"
 
 	if global.CONFIG.Serve.EdbLibUrl == `` {
@@ -103,14 +125,16 @@ func GetNoMergeIndexByFrequencyCount(req GetMaxFileIndexReq) (total int, err err
 	}
 
 	var resp BaseResponse
-	global.LOG.Info(" Refresh Result: " + string(result))
+	global.LOG.Info(" GetNoMergeIndexByFrequencyCount Result: " + string(result))
 	err = json.Unmarshal(result, &resp)
 	if err != nil {
 		return
 	}
 
-	total = resp.Data.(int)
-
+	t, ok := resp.Data.(float64)
+	if ok {
+		total = t
+	}
 	return
 }
 
@@ -132,15 +156,14 @@ func GetMaxFileIndex(req GetMaxFileIndexReq) (baseFromMysteelChemicalIndex index
 		return
 	}
 
-	var resp BaseResponse
+	var resp IndexResponse
 	global.LOG.Info(" Refresh Result: " + string(result))
 	err = json.Unmarshal(result, &resp)
 	if err != nil {
 		return
 	}
 
-	baseFromMysteelChemicalIndex = resp.Data.(index.BaseFromMysteelChemicalIndex)
-
+	baseFromMysteelChemicalIndex = resp.Data
 	return
 }
 
@@ -171,15 +194,269 @@ func GetNoMergeIndexByFrequencyPage(frequency string, limit int) (item []index.B
 		return
 	}
 
+	var resp IndexesResponse
+	global.LOG.Info(" GetNoMergeIndexByFrequencyPage Result: " + string(result))
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+
+	item = resp.Data
+	return
+}
+
+// GetIndexCountByMergeFilePathReq 获取该文件下标已经存在多少的指标请求体
+type GetIndexCountByMergeFilePathReq struct {
+	MergeFilePath string
+}
+
+// GetIndexCountByMergeFilePath 获取该文件下标已经存在多少的指标
+func GetIndexCountByMergeFilePath(mergeFilePath string) (total float64, err error) {
+	if global.CONFIG.Serve.EdbLibUrl == `` {
+		err = errors.New("刷新未配置")
+		return
+	}
+	if mergeFilePath == "" {
+		err = fmt.Errorf("文件路径为空")
+		return
+	}
+
+	baseUrl := "/mysteel_chemical/getIndexCountByMergeFilePath"
+	url := fmt.Sprint(global.CONFIG.Serve.EdbLibUrl, baseUrl)
+	postData, err := json.Marshal(GetIndexCountByMergeFilePathReq{
+		MergeFilePath: mergeFilePath,
+	})
+	result, err := HttpPost(url, string(postData), "application/json")
+	if err != nil {
+		return
+	}
+
 	var resp BaseResponse
-	global.LOG.Info(" Refresh Result: " + string(result))
+	global.LOG.Info(" GetIndexCountByMergeFilePath Result: " + string(result))
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+	t, ok := resp.Data.(float64)
+	if ok {
+		total = t
+	}
+	return
+}
+
+// GetIndexCreate 获取两分钟前新增的指标
+func GetIndexCreate() (items []index.BaseFromMysteelChemicalIndex, err error) {
+	if global.CONFIG.Serve.EdbLibUrl == `` {
+		err = errors.New("刷新未配置")
+		return
+	}
+
+	baseUrl := "/mysteel_chemical/getIndexCreate"
+	url := fmt.Sprint(global.CONFIG.Serve.EdbLibUrl, baseUrl)
+	result, err := HttpPost(url, "", "application/json")
+	if err != nil {
+		return
+	}
+
+	var resp IndexesResponse
+	global.LOG.Info(" GetIndexCreate Result: " + string(result))
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+
+	items = resp.Data
+	return
+}
+
+// GetIndexRefreshAllByMergeFile 获取全部刷新所需文件
+func GetIndexRefreshAllByMergeFile() (items []index.BaseFromMysteelChemicalIndex, err error) {
+	if global.CONFIG.Serve.EdbLibUrl == `` {
+		err = errors.New("刷新未配置")
+		return
+	}
+
+	baseUrl := "/mysteel_chemical/query/refresh"
+	url := fmt.Sprint(global.CONFIG.Serve.EdbLibUrl, baseUrl)
+	result, err := HttpPost(url, "", "application/json")
+	if err != nil {
+		return
+	}
+
+	var resp IndexesResponse
+	global.LOG.Info(" GetIndexRefreshAllByMergeFile Result: " + string(result))
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+
+	items = resp.Data
+	return
+}
+
+// GetIndexRefreshMethanolByMergeFile 获取需要刷新的甲醇文件
+func GetIndexRefreshMethanolByMergeFile() (items []index.BaseFromMysteelChemicalIndex, err error) {
+	if global.CONFIG.Serve.EdbLibUrl == `` {
+		err = errors.New("刷新未配置")
+		return
+	}
+
+	baseUrl := "/mysteel_chemical/getIndexRefreshMethanolByMergeFile"
+	url := fmt.Sprint(global.CONFIG.Serve.EdbLibUrl, baseUrl)
+	result, err := HttpPost(url, "", "application/json")
+	if err != nil {
+		return
+	}
+
+	var resp IndexesResponse
+	global.LOG.Info(" GetIndexRefreshMethanolByMergeFile Result: " + string(result))
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+
+	items = resp.Data
+	return
+}
+
+// GetIndexRefreshMethanolByTimely 获取需要及时刷新的文件
+func GetIndexRefreshMethanolByTimely() (items []index.BaseFromMysteelChemicalIndex, err error) {
+	if global.CONFIG.Serve.EdbLibUrl == `` {
+		err = errors.New("刷新未配置")
+		return
+	}
+
+	baseUrl := "/mysteel_chemical/getIndexRefreshMethanolByTimely"
+	url := fmt.Sprint(global.CONFIG.Serve.EdbLibUrl, baseUrl)
+	result, err := HttpPost(url, "", "application/json")
+	if err != nil {
+		return
+	}
+
+	var resp IndexesResponse
+	global.LOG.Info(" GetIndexRefreshMethanolByTimely Result: " + string(result))
 	err = json.Unmarshal(result, &resp)
 	if err != nil {
 		return
 	}
 
-	item = resp.Data.([]index.BaseFromMysteelChemicalIndex)
+	items = resp.Data
+	return
+}
+
+type GetIndexByFrequencyReq struct {
+	Frequency string
+}
+
+// GetIndexByFrequency 根据频率获取指标
+func GetIndexByFrequency(frequency string) (items []index.BaseFromMysteelChemicalIndex, err error) {
+	if global.CONFIG.Serve.EdbLibUrl == `` {
+		err = errors.New("刷新未配置")
+		return
+	}
+	if frequency == "" {
+		err = fmt.Errorf("频率为空")
+		return
+	}
+
+	baseUrl := "/mysteel_chemical/getIndexByFrequency"
+	url := fmt.Sprint(global.CONFIG.Serve.EdbLibUrl, baseUrl)
+	postData, err := json.Marshal(GetIndexByFrequencyReq{
+		Frequency: frequency,
+	})
+	result, err := HttpPost(url, string(postData), "application/json")
+	if err != nil {
+		return
+	}
 
+	var resp IndexesResponse
+	global.LOG.Info(" GetIndexByFrequency Result: " + string(result))
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+
+	items = resp.Data
+	return
+}
+
+type GetIndexRefreshWeekReq struct {
+	NowWeekZn string
+	StartTime string
+	EndTime   string
+}
+
+// GetIndexRefreshWeek 根据周获取指标
+func GetIndexRefreshWeek(nowWeekZn, startTime, endTime string) (items []index.BaseFromMysteelChemicalIndex, err error) {
+	if global.CONFIG.Serve.EdbLibUrl == `` {
+		err = errors.New("刷新未配置")
+		return
+	}
+	if nowWeekZn == "" || startTime == "" || endTime == "" {
+		err = fmt.Errorf("参数有误, nowWeekZn: %s, startTime: %s, endTime: %s", nowWeekZn, startTime, endTime)
+		return
+	}
+
+	baseUrl := "/mysteel_chemical/getIndexRefreshWeek"
+	url := fmt.Sprint(global.CONFIG.Serve.EdbLibUrl, baseUrl)
+	postData, err := json.Marshal(GetIndexRefreshWeekReq{
+		NowWeekZn: nowWeekZn,
+		StartTime: startTime,
+		EndTime:   endTime,
+	})
+	result, err := HttpPost(url, string(postData), "application/json")
+	if err != nil {
+		return
+	}
+
+	var resp IndexesResponse
+	global.LOG.Info(" GetIndexRefreshWeek Result: " + string(result))
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+
+	items = resp.Data
+	return
+}
+
+// UpdateIndexReq 更新指标
+type UpdateIndexReq struct {
+	Item       *index.BaseFromMysteelChemicalIndex
+	UpdateCols []string
+}
+
+// MultiUpdateIndex 批量更新指标
+func MultiUpdateIndex(req []UpdateIndexReq) (err error) {
+	if global.CONFIG.Serve.EdbLibUrl == `` {
+		err = errors.New("刷新未配置")
+		return
+	}
+	if len(req) == 0 {
+		err = fmt.Errorf("无指标需要更新")
+		return
+	}
+
+	urlStr := "/mysteel_chemical/multiUpdateIndex"
+	postUrl := global.CONFIG.Serve.EdbLibUrl + urlStr
+	postData, err := json.Marshal(req)
+	if err != nil {
+		return
+	}
+	result, err := HttpPost(postUrl, string(postData), "application/json")
+	if err != nil {
+		return
+	}
+
+	var resp BaseResponse
+	global.LOG.Info(" MultiUpdateIndex Result: " + string(result))
+	err = json.Unmarshal(result, &resp)
+	if err != nil {
+		return
+	}
+	if resp.Ret != 200 {
+		err = fmt.Errorf(resp.ErrMsg)
+	}
 	return
 }
 

+ 271 - 393
watch/watch.go

@@ -3,12 +3,9 @@ package watch
 import (
 	"fmt"
 	"hongze/mysteel_watch/global"
-	"hongze/mysteel_watch/models"
-	"hongze/mysteel_watch/models/index"
 	"hongze/mysteel_watch/utils"
 	"log"
 	"os"
-	"path/filepath"
 	"strings"
 	"sync"
 	"time"
@@ -49,8 +46,8 @@ func ListenFolderNew() {
 			}
 		}
 	}()
-	fmt.Println("watch dir:" + utils.IndexSaveDir)
-	err = watcher.Add(utils.IndexSaveDir)
+	fmt.Println("watch dir:" + global.CONFIG.Serve.IndexSaveDir)
+	err = watcher.Add(global.CONFIG.Serve.IndexSaveDir)
 	if err != nil {
 		fmt.Println("watcher.Add:" + err.Error())
 		log.Fatal(err)
@@ -86,7 +83,7 @@ func ListenFolderNewMerge() {
 			}
 		}
 	}()
-	err = watcher.Add(utils.IndexMsergeSaveDir)
+	err = watcher.Add(global.CONFIG.Serve.IndexMergeSaveDir)
 	if err != nil {
 		log.Fatal(err)
 	}
@@ -124,14 +121,15 @@ func WatchIndexFile(filePath string) {
 			}
 		}
 	}()
-	var runMode string
-	if strings.Contains(filePath, "debug") {
-		runMode = "debug"
-	} else {
-		runMode = "release"
-	}
+	//var runMode string
+	//if strings.Contains(filePath, "debug") {
+	//	runMode = "debug"
+	//} else {
+	//	runMode = "release"
+	//}
 
-	dir, fp := filepath.Split(filePath)
+	reqList := make([]*HandleMysteelIndex, 0)
+	//dir, fp := filepath.Split(filePath)
 
 	var wg = sync.WaitGroup{}
 	wg.Add(1)
@@ -139,232 +137,107 @@ func WatchIndexFile(filePath string) {
 		sheetList := f.GetSheetList()
 		for _, sv := range sheetList {
 
-			var indexName, indexCode, unit, source, frequency, startDate, endDate, describe, updateDate string
-			var indexId int64
+			lenRow := 0 //指标数
+
+			// excel表的指标数据
+			indexExcelDataList := make([]map[string]string, 0)
+
+			indexNameMap := make(map[int]string)
+			indexCodeMap := make(map[int]string)
+			unitMap := make(map[int]string)
+			sourceMap := make(map[int]string)
+			frequencyMap := make(map[int]string)
+			startDateMap := make(map[int]string)
+			endDateMap := make(map[int]string)
+			describeMap := make(map[int]string)
+			updateDateMap := make(map[int]string)
+
 			rows, err := f.GetRows(sv)
 			if err != nil {
-				fmt.Println("f.GetRows:err:" + err.Error())
+				fmt.Println("GetRows Err:", err)
 				return
 			}
 
-			indexObj := new(index.BaseFromMysteelChemicalIndex)
-			dataList := make([]index.BaseFromMysteelChemicalData, 0)
-
-			dataMap := make(map[string]string)
-			for rk, row := range rows {
-				if rk > 0 {
-					if rk < 10 {
-						for ck, colCell := range row {
-							if ck == 1 {
-								if rk == 1 {
-									indexName = colCell
-								}
-								if rk == 2 {
-									unit = colCell
-								}
-								if rk == 3 {
-									source = colCell
-								}
-								if rk == 4 {
-									indexCode = colCell
-								}
-								if rk == 5 {
-									frequency = colCell
-									if !strings.Contains(frequency, "度") {
-										frequency = frequency + "度"
-									}
-								}
-								if rk == 6 {
-									dateArr := strings.Split(colCell, "~")
-									if len(dateArr) >= 2 {
-										startDate = dateArr[0]
-										endDate = dateArr[1]
-									}
-								}
-								if rk == 7 {
-									describe = colCell
-								}
-
-								if rk == 9 {
-									updateDate = colCell
-								}
-							}
-						}
-
-						if rk == 9 {
-							if indexName == "" {
-								global.LOG.Info("未刷新到指标数据:filePath:" + filePath)
-								break
-							}
-							//判断指标是否存在
-							var isAdd int
-							item, err := indexObj.GetIndexItem(runMode, indexCode)
-							if err != nil {
-								if err.Error() == "record not found" {
-									isAdd = 1
-								} else {
-									isAdd = -1
-									fmt.Println("GetIndexItem Err:" + err.Error())
-									return
-								}
-							}
-							if item != nil && item.BaseFromMysteelChemicalIndexId > 0 {
-								fmt.Println("item:", item)
-								isAdd = 2
-							} else {
-								isAdd = 1
-							}
-
-							fmt.Println("isAdd:", isAdd)
-							if !strings.Contains(frequency, "度") {
-								frequency = frequency + "度"
-							}
+			for row, cols := range rows {
+				if row == 0 {
+					// 第一行是 钢联数据的备注
+					continue
+				}
+				// 指标名称
+				if row == 1 {
+					lenRow = len(cols) - 1
+					for i := 1; i <= lenRow; i++ {
+						tmpIndexExcelDataList := make(map[string]string, 0)
+						indexExcelDataList = append(indexExcelDataList, tmpIndexExcelDataList)
+					}
+				}
 
-							var frequencyStr string
-							if strings.Contains(frequency, "日") {
-								frequencyStr = "day"
-							} else if strings.Contains(frequency, "周") {
-								frequencyStr = "week"
-							} else if strings.Contains(frequency, "月") || strings.Contains(frequency, "旬") {
-								frequencyStr = "month"
-							} else if strings.Contains(frequency, "年") {
-								frequencyStr = "year"
-							}
-							frequencyStr = "_" + frequencyStr
-							if !strings.Contains(filePath, frequencyStr) {
-								fpArr := strings.Split(fp, "_")
-								for k, v := range fpArr {
-									if k == 0 {
-										newFilePath = v + frequencyStr
-									} else {
-										newFilePath = newFilePath + "_" + v
-									}
-								}
-								newFilePath = dir + newFilePath
-							} else {
-								newFilePath = filePath
+				if row < 10 {
+					for k, colCell := range cols {
+						switch row {
+						case 1: //指标名称
+							indexNameMap[k-1] = colCell
+						case 2: //单位
+							unitMap[k-1] = colCell
+						case 3: //数据来源
+							sourceMap[k-1] = colCell
+						case 4: //指标编码
+							indexCodeMap[k-1] = colCell
+						case 5: //频度
+							tmpFrequency := colCell
+							if !strings.Contains(tmpFrequency, "度") {
+								tmpFrequency = tmpFrequency + "度"
 							}
-
-							fmt.Println("isAdd:", isAdd)
-							if isAdd == 1 {
-								indexObj.IndexCode = indexCode
-								indexObj.IndexName = indexName
-								indexObj.Unit = unit
-								indexObj.Source = source
-								indexObj.Describe = describe
-								indexObj.StartDate, _ = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
-								indexObj.EndDate, _ = time.ParseInLocation(utils.FormatDate, endDate, time.Local)
-								indexObj.Frequency = frequency
-								indexObj.FilePath = newFilePath
-								indexObj.UpdateDate = updateDate
-								if updateDate != "" {
-									updateDateT, err := time.Parse(utils.FormatDate, updateDate)
-									if err == nil {
-										week := utils.GetWeekZn(updateDateT.Weekday().String())
-										indexObj.MergeUpdateWeek = week
-									}
-								}
-								err = indexObj.Add(runMode)
-								if err != nil {
-									fmt.Println("add err:" + err.Error())
-									return
-								}
-								indexId = indexObj.BaseFromMysteelChemicalIndexId
-							} else if isAdd == 2 {
-								indexObj.IndexCode = indexCode
-								indexObj.IndexName = indexName
-								indexObj.Unit = unit
-								indexObj.Source = source
-								indexObj.Describe = describe
-								indexObj.StartDate, _ = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
-								indexObj.EndDate, _ = time.ParseInLocation(utils.FormatDate, endDate, time.Local)
-								indexObj.Frequency = frequency
-								indexObj.FilePath = newFilePath
-								indexObj.ModifyTime = time.Now()
-								if updateDate != "" {
-									updateDateT, err := time.Parse(utils.FormatDate, updateDate)
-									if err == nil {
-										week := utils.GetWeekZn(updateDateT.Weekday().String())
-										indexObj.MergeUpdateWeek = week
-									}
-									indexObj.UpdateDate = updateDate
-								}
-								indexId = item.BaseFromMysteelChemicalIndexId
-								//修改数据
-								updateColsArr := make([]string, 0)
-								updateColsArr = append(updateColsArr, "index_name")
-								updateColsArr = append(updateColsArr, "unit")
-								updateColsArr = append(updateColsArr, "source")
-								updateColsArr = append(updateColsArr, "frequency")
-								updateColsArr = append(updateColsArr, "start_date")
-								updateColsArr = append(updateColsArr, "end_date")
-								updateColsArr = append(updateColsArr, "describe")
-								updateColsArr = append(updateColsArr, "end_date")
-								updateColsArr = append(updateColsArr, "modify_time")
-								updateColsArr = append(updateColsArr, "file_path")
-								updateColsArr = append(updateColsArr, "update_date")
-								updateColsArr = append(updateColsArr, "merge_update_week")
-
-								err = indexObj.Update(runMode, updateColsArr)
-								if err != nil {
-									fmt.Println("indexObj.Update err:" + err.Error())
-								}
-
-								dataObj := new(index.BaseFromMysteelChemicalData)
-								//获取已存在的所有数据
-								dataList, err := dataObj.GetIndexDataList(runMode, indexCode)
-								if err != nil {
-									fmt.Println("GetIndexDataList Err:" + err.Error())
-									return
-								}
-								fmt.Println("dataListLen:", len(dataList))
-								for _, v := range dataList {
-									dateStr := v.DataTime.Format(utils.FormatDate)
-									dataMap[dateStr] = v.Value
-								}
+							frequencyMap[k-1] = tmpFrequency
+						case 6: //时间区间
+							dateArr := strings.Split(colCell, "~")
+							if len(dateArr) >= 2 {
+								startDateMap[k-1] = dateArr[0]
+								endDateMap[k-1] = dateArr[1]
 							}
+						case 7: //备注
+							describeMap[k-1] = colCell
+						case 9:
+							updateDateMap[k-1] = colCell
 						}
-					} else {
-						var date, value string
-						for ck, colCell := range row {
-							if ck == 0 {
-								date = colCell
-							} else {
-								value = colCell
-							}
+					}
+				} else {
+					date := ``
+					for k, col := range cols {
+						if k == 0 {
+							date = col
+							continue
 						}
-						if _, ok := dataMap[date]; !ok {
-							dateTime, err := time.ParseInLocation(utils.FormatDate, date, time.Local)
-							if err != nil {
-								fmt.Println("time.ParseInLocation Err:" + err.Error())
-								return
-							}
-							if !strings.Contains(value, "#N/A") {
-								dataItem := new(index.BaseFromMysteelChemicalData)
-								dataItem.BaseFromMysteelChemicalIndexId = indexId
-								dataItem.IndexCode = indexCode
-								dataItem.DataTime = dateTime
-								dataItem.Value = value
-								dataItem.UpdateDate = updateDate
-								dataItem.CreateTime = time.Now()
-								dataItem.ModifyTime = time.Now()
-								dataList = append(dataList, *dataItem)
-							}
+						if date == `` {
+							continue
+						}
+						if col != `` {
+							indexExcelDataList[k-1][date] = col
 						}
 					}
 				}
+
 			}
 
-			if len(dataList) > 0 {
-				fmt.Println("dataObj.Add")
-				dataObj := new(index.BaseFromMysteelChemicalData)
-				err = dataObj.Add(runMode, dataList)
-				if err != nil {
-					fmt.Println("dataObj.Add() Err:" + err.Error())
-				}
-			} else {
-				fmt.Println("dataObj.Add:", len(dataList))
+			for k, excelDataMap := range indexExcelDataList {
+				indexItem := new(HandleMysteelIndex)
+				indexItem.IndexName = indexNameMap[k]
+				indexItem.IndexCode = indexCodeMap[k]
+				indexItem.Unit = unitMap[k]
+				indexItem.Source = sourceMap[k]
+				indexItem.Frequency = frequencyMap[k]
+				indexItem.StartDate = startDateMap[k]
+				indexItem.EndDate = endDateMap[k]
+				indexItem.Describe = describeMap[k]
+				indexItem.UpdateDate = updateDateMap[k]
+				indexItem.ExcelDataMap = excelDataMap
+				reqList = append(reqList, indexItem)
+				//mysteelIndexHandle(runMode, indexNameMap[k], indexCodeMap[k], unitMap[k], sourceMap[k], frequencyMap[k], startDateMap[k], endDateMap[k], describeMap[k], updateDateMap[k], excelDataMap)
 			}
+
+			resp := new(HandleMysteelIndexReq)
+			resp.List = reqList
+			postHandleMysteelIndex(resp)
 		}
 		wg.Done()
 	}()
@@ -532,176 +405,181 @@ type HandleMysteelIndexReq struct {
 }
 
 // mysteelIndexHandle 钢联数据处理
-func mysteelIndexHandle(runMode, indexName, indexCode, unit, source, frequency, startDate, endDate, describe, updateDate string, excelDataMap map[string]string) {
-	var err error
-
-	//return
-	indexObj := new(index.BaseFromMysteelChemicalIndex)
-	var indexId int64
-
-	addDataList := make([]index.BaseFromMysteelChemicalData, 0)
-
-	exitDataMap := make(map[string]*index.BaseFromMysteelChemicalData)
-
-	// 修改指标信息
-	if indexName == "" {
-		global.LOG.Info("未刷新到指标数据:indexName:" + indexName)
-		return
-	}
-	//判断指标是否存在
-	var isAdd int
-	item, err := indexObj.GetIndexItem(runMode, indexCode)
-	if err != nil {
-		if err.Error() == "record not found" {
-			isAdd = 1
-		} else {
-			isAdd = -1
-			fmt.Println("GetIndexItem Err:" + err.Error())
-			return
-		}
-	}
-	if item != nil && item.BaseFromMysteelChemicalIndexId > 0 {
-		fmt.Println("item:", item)
-		isAdd = 2
-	} else {
-		isAdd = 1
-	}
-
-	fmt.Println("isAdd:", isAdd)
-	if !strings.Contains(frequency, "度") {
-		frequency = frequency + "度"
-	}
-
-	if isAdd == 1 {
-		indexObj.IndexCode = indexCode
-		indexObj.IndexName = indexName
-		indexObj.Unit = unit
-		indexObj.Source = source
-		indexObj.Describe = describe
-		indexObj.StartDate, _ = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
-		indexObj.EndDate, _ = time.ParseInLocation(utils.FormatDate, endDate, time.Local)
-		indexObj.Frequency = frequency
-		err = indexObj.Add(runMode)
-		if err != nil {
-			fmt.Println("add err:" + err.Error())
-			return
-		}
-		indexId = indexObj.BaseFromMysteelChemicalIndexId
-	} else if isAdd == 2 {
-		indexObj.IndexCode = indexCode
-		indexObj.IndexName = indexName
-		indexObj.Unit = unit
-		indexObj.Source = source
-		indexObj.Describe = describe
-		indexObj.StartDate, _ = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
-		indexObj.EndDate, _ = time.ParseInLocation(utils.FormatDate, endDate, time.Local)
-		indexObj.Frequency = frequency
-		indexObj.ModifyTime = time.Now()
-		indexId = item.BaseFromMysteelChemicalIndexId
-		//修改数据
-		updateColsArr := make([]string, 0)
-		updateColsArr = append(updateColsArr, "index_name")
-		updateColsArr = append(updateColsArr, "unit")
-		updateColsArr = append(updateColsArr, "source")
-		updateColsArr = append(updateColsArr, "frequency")
-		updateColsArr = append(updateColsArr, "start_date")
-		updateColsArr = append(updateColsArr, "end_date")
-		updateColsArr = append(updateColsArr, "describe")
-		updateColsArr = append(updateColsArr, "end_date")
-		updateColsArr = append(updateColsArr, "modify_time")
-
-		indexObj.Update(runMode, updateColsArr)
-
-		dataObj := new(index.BaseFromMysteelChemicalData)
-
-		//获取已存在的所有数据
-		exitDataList, err := dataObj.GetIndexDataList(runMode, indexCode)
-		if err != nil {
-			fmt.Println("GetIndexDataList Err:" + err.Error())
-			return
-		}
-		fmt.Println("exitDataListLen:", len(exitDataList))
-		for _, v := range exitDataList {
-			dateStr := v.DataTime.Format(utils.FormatDate)
-			exitDataMap[dateStr] = v
-		}
-	}
-
-	dataObj := new(index.BaseFromMysteelChemicalData)
-	// 遍历excel数据,然后跟现有的数据做校验,不存在则入库
-	for date, value := range excelDataMap {
-		if findData, ok := exitDataMap[date]; !ok {
-			dateTime, err := time.ParseInLocation(utils.FormatDate, date, time.Local)
-			if err != nil {
-				fmt.Println("time.ParseInLocation Err:" + err.Error())
-				return
-			}
-			if !strings.Contains(value, "#N/A") {
-				dataItem := new(index.BaseFromMysteelChemicalData)
-				dataItem.BaseFromMysteelChemicalIndexId = indexId
-				dataItem.IndexCode = indexCode
-				dataItem.DataTime = dateTime
-				dataItem.Value = value
-				dataItem.UpdateDate = updateDate
-				dataItem.CreateTime = time.Now()
-				dataItem.ModifyTime = time.Now()
-				addDataList = append(addDataList, *dataItem)
-			}
-		} else {
-			if findData != nil && findData.Value != value && !strings.Contains(value, "#N/A") { //修改数据
-				dataObj.Value = value
-				dataObj.ModifyTime = time.Now()
-				dataObj.BaseFromMysteelChemicalDataId = findData.BaseFromMysteelChemicalDataId
-
-				updateDataColsArr := make([]string, 0)
-				updateDataColsArr = append(updateDataColsArr, "value")
-				updateDataColsArr = append(updateDataColsArr, "modify_time")
-				dataObj.Update(runMode, updateDataColsArr)
-				global.LOG.Info(findData.IndexCode + " " + findData.Value + "-" + value)
-			}
-		}
-	}
-
-	if len(addDataList) > 0 {
-		err = dataObj.Add(runMode, addDataList)
-		if err != nil {
-			fmt.Println("dataObj.Add() Err:" + err.Error())
-		}
-	}
-
-	go syncEdbDataMysteelChemical(runMode, indexCode)
-}
-
-func syncEdbDataMysteelChemical(runMode, indexCode string) {
-	indexObj := new(models.EdbInfo)
-	var isAdd int
-	item, err := indexObj.GetEdbInfoItem(runMode, indexCode)
-	if err != nil {
-		if err.Error() == "record not found" {
-			isAdd = 1
-		} else {
-			isAdd = -1
-			fmt.Println("GetEdbInfoItem Err:" + err.Error())
-			return
-		}
-	}
-	if item != nil && item.EdbInfoId > 0 {
-		fmt.Println("item:", item)
-		isAdd = 2
-	} else {
-		isAdd = 1 //
-	}
-
-	if isAdd == 1 { //新增
-		return
-	}
-
-	param := make(map[string]interface{})
-	param["EdbCode"] = indexCode
-	param["EdbInfoId"] = item.EdbInfoId
-	param["StartDate"] = item.EndDate
-	postRefreshEdbData(param)
-}
+//func mysteelIndexHandle(runMode, indexName, indexCode, unit, source, frequency, startDate, endDate, describe, updateDate string, excelDataMap map[string]string) {
+//	var err error
+//
+//	//return
+//	indexObj := new(index.BaseFromMysteelChemicalIndex)
+//	var indexId int64
+//
+//	addDataList := make([]index.BaseFromMysteelChemicalData, 0)
+//
+//	exitDataMap := make(map[string]*index.BaseFromMysteelChemicalData)
+//
+//	// 修改指标信息
+//	if indexName == "" {
+//		global.LOG.Info("未刷新到指标数据:indexName:" + indexName)
+//		return
+//	}
+//	//判断指标是否存在
+//	var isAdd int
+//	//req := GetIndexByIndexCodeReq{
+//	//	IndexCode: indexCode,
+//	//}
+//	//item, err := indexObj.GetIndexItem(runMode, indexCode)
+//	item, e := GetIndexByIndexCode(indexCode)
+//	if e != nil {
+//		//if err.Error() == "record not found" {
+//		//	isAdd = 1
+//		//} else {
+//		isAdd = -1
+//		fmt.Println("GetIndexItem Err:" + err.Error())
+//		return
+//		//}
+//	}
+//	if item.BaseFromMysteelChemicalIndexId > 0 {
+//		fmt.Println("item:", item)
+//		isAdd = 2
+//	} else {
+//		isAdd = 1
+//	}
+//
+//	fmt.Println("isAdd:", isAdd)
+//	if !strings.Contains(frequency, "度") {
+//		frequency = frequency + "度"
+//	}
+//
+//	if isAdd == 1 {
+//		indexObj.IndexCode = indexCode
+//		indexObj.IndexName = indexName
+//		indexObj.Unit = unit
+//		indexObj.Source = source
+//		indexObj.Describe = describe
+//		indexObj.StartDate, _ = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
+//		indexObj.EndDate, _ = time.ParseInLocation(utils.FormatDate, endDate, time.Local)
+//		indexObj.Frequency = frequency
+//		//err = indexObj.Add(runMode)
+//		err = CreateIndex(indexObj)
+//		if err != nil {
+//			fmt.Println("add err:" + err.Error())
+//			return
+//		}
+//		indexId = indexObj.BaseFromMysteelChemicalIndexId
+//	} else if isAdd == 2 {
+//		indexObj.IndexCode = indexCode
+//		indexObj.IndexName = indexName
+//		indexObj.Unit = unit
+//		indexObj.Source = source
+//		indexObj.Describe = describe
+//		indexObj.StartDate, _ = time.ParseInLocation(utils.FormatDate, startDate, time.Local)
+//		indexObj.EndDate, _ = time.ParseInLocation(utils.FormatDate, endDate, time.Local)
+//		indexObj.Frequency = frequency
+//		indexObj.ModifyTime = time.Now()
+//		indexId = item.BaseFromMysteelChemicalIndexId
+//		//修改数据
+//		updateColsArr := make([]string, 0)
+//		updateColsArr = append(updateColsArr, "index_name")
+//		updateColsArr = append(updateColsArr, "unit")
+//		updateColsArr = append(updateColsArr, "source")
+//		updateColsArr = append(updateColsArr, "frequency")
+//		updateColsArr = append(updateColsArr, "start_date")
+//		updateColsArr = append(updateColsArr, "end_date")
+//		updateColsArr = append(updateColsArr, "describe")
+//		updateColsArr = append(updateColsArr, "end_date")
+//		updateColsArr = append(updateColsArr, "modify_time")
+//
+//		indexObj.Update(runMode, updateColsArr)
+//
+//		dataObj := new(index.BaseFromMysteelChemicalData)
+//
+//		//获取已存在的所有数据
+//		exitDataList, err := dataObj.GetIndexDataList(runMode, indexCode)
+//		if err != nil {
+//			fmt.Println("GetIndexDataList Err:" + err.Error())
+//			return
+//		}
+//		fmt.Println("exitDataListLen:", len(exitDataList))
+//		for _, v := range exitDataList {
+//			dateStr := v.DataTime.Format(utils.FormatDate)
+//			exitDataMap[dateStr] = v
+//		}
+//	}
+//
+//	dataObj := new(index.BaseFromMysteelChemicalData)
+//	// 遍历excel数据,然后跟现有的数据做校验,不存在则入库
+//	for date, value := range excelDataMap {
+//		if findData, ok := exitDataMap[date]; !ok {
+//			dateTime, err := time.ParseInLocation(utils.FormatDate, date, time.Local)
+//			if err != nil {
+//				fmt.Println("time.ParseInLocation Err:" + err.Error())
+//				return
+//			}
+//			if !strings.Contains(value, "#N/A") {
+//				dataItem := new(index.BaseFromMysteelChemicalData)
+//				dataItem.BaseFromMysteelChemicalIndexId = indexId
+//				dataItem.IndexCode = indexCode
+//				dataItem.DataTime = dateTime
+//				dataItem.Value = value
+//				dataItem.UpdateDate = updateDate
+//				dataItem.CreateTime = time.Now()
+//				dataItem.ModifyTime = time.Now()
+//				addDataList = append(addDataList, *dataItem)
+//			}
+//		} else {
+//			if findData != nil && findData.Value != value && !strings.Contains(value, "#N/A") { //修改数据
+//				dataObj.Value = value
+//				dataObj.ModifyTime = time.Now()
+//				dataObj.BaseFromMysteelChemicalDataId = findData.BaseFromMysteelChemicalDataId
+//
+//				updateDataColsArr := make([]string, 0)
+//				updateDataColsArr = append(updateDataColsArr, "value")
+//				updateDataColsArr = append(updateDataColsArr, "modify_time")
+//				dataObj.Update(runMode, updateDataColsArr)
+//				global.LOG.Info(findData.IndexCode + " " + findData.Value + "-" + value)
+//			}
+//		}
+//	}
+//
+//	if len(addDataList) > 0 {
+//		err = dataObj.Add(runMode, addDataList)
+//		if err != nil {
+//			fmt.Println("dataObj.Add() Err:" + err.Error())
+//		}
+//	}
+//
+//	go syncEdbDataMysteelChemical(runMode, indexCode)
+//}
+
+//func syncEdbDataMysteelChemical(runMode, indexCode string) {
+//	indexObj := new(models.EdbInfo)
+//	var isAdd int
+//	item, err := indexObj.GetEdbInfoItem(runMode, indexCode)
+//	if err != nil {
+//		if err.Error() == "record not found" {
+//			isAdd = 1
+//		} else {
+//			isAdd = -1
+//			fmt.Println("GetEdbInfoItem Err:" + err.Error())
+//			return
+//		}
+//	}
+//	if item != nil && item.EdbInfoId > 0 {
+//		fmt.Println("item:", item)
+//		isAdd = 2
+//	} else {
+//		isAdd = 1 //
+//	}
+//
+//	if isAdd == 1 { //新增
+//		return
+//	}
+//
+//	param := make(map[string]interface{})
+//	param["EdbCode"] = indexCode
+//	param["EdbInfoId"] = item.EdbInfoId
+//	param["StartDate"] = item.EndDate
+//	postRefreshEdbData(param)
+//}
 
 /*
 CREATE动作即临时文件的创建