package controllers import ( "encoding/json" "eta/eta_index_lib/logic" "eta/eta_index_lib/models" "eta/eta_index_lib/services" "eta/eta_index_lib/utils" "fmt" "strconv" "time" ) // MySteelChemicalController 钢联化工 type MySteelChemicalController struct { BaseAuthController } // Add // @Title 新增钢联化工指标接口 // @Description 新增钢联化工指标接口 // @Success 200 {object} models.AddEdbInfoReq // @router /add [post] func (this *MySteelChemicalController) Add() { br := new(models.BaseResponse).Init() var cacheKey string defer func() { utils.Rc.Delete(cacheKey) this.Data["json"] = br this.ServeJSON() }() source := utils.DATA_SOURCE_MYSTEEL_CHEMICAL var req models.AddEdbInfoReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.EdbCode == "" { br.Msg = "请输入指标编码!" br.ErrMsg = "请输入指标编码,指标编码为空" return } cacheKey = utils.CACHE_EDB_DATA_ADD + strconv.Itoa(source) + "_" + req.EdbCode if !utils.Rc.IsExist(cacheKey) { utils.Rc.SetNX(cacheKey, 1, 1*time.Minute) err = models.AddEdbDataFromMysteelChemical(req.EdbCode) if err != nil { br.Msg = "获取指标信息失败!" br.ErrMsg = "获取指标信息失败 AddEdbDataFromMysteelChemical,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "获取成功" } else { br.Ret = 501 br.Success = true br.Msg = "系统处理中,请稍后重试" } } // Refresh // @Title 刷新钢联化工指标接口 // @Description 刷新钢联化工指标接口 // @Success 200 {object} models.RefreshEdbInfoReq // @router /refresh [post] func (this *MySteelChemicalController) Refresh() { br := new(models.BaseResponse).Init() var cacheKey string defer func() { utils.Rc.Delete(cacheKey) this.Data["json"] = br this.ServeJSON() }() source := utils.DATA_SOURCE_MYSTEEL_CHEMICAL var req models.RefreshEdbInfoReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.EdbCode == "" { br.Msg = "请输入指标编码!" br.ErrMsg = "请输入指标编码,指标编码为空" return } if req.EdbInfoId <= 0 { br.Msg = "请输入指标ID!" br.ErrMsg = "请输入指标ID" return } // 获取指标详情 edbInfo, err := models.GetEdbInfoByEdbCode(source, req.EdbCode) if err != nil { br.Msg = "指标不存在!" br.ErrMsg = "指标不存在" return } cacheKey = utils.CACHE_EDB_DATA_REFRESH + strconv.Itoa(source) + "_" + req.EdbCode if utils.Rc.IsExist(cacheKey) { br.Ret = 501 br.Success = true br.Msg = "系统处理中,请稍后重试" return } dataUpdateTime := time.Now().Format(utils.FormatDateTime) utils.Rc.SetNX(cacheKey, 1, 1*time.Minute) err = models.RefreshEdbDataFromMysteelChemical(req.EdbInfoId, req.EdbCode, req.StartDate) if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "刷新指标信息失败!" br.ErrMsg = "刷新指标信息失败 RefreshEdbDataFromMysteel,Err:" + err.Error() return } // 更新指标最大最小值 erDataUpdateDate, err, errMsg := models.UnifiedModifyEdbInfoMaxAndMinInfoDataUpdate(edbInfo, dataUpdateTime) if err != nil { br.Msg = errMsg br.ErrMsg = err.Error() return } // 添加指标刷新成功日志 if erDataUpdateDate != "" { _ = services.AddEdbInfoUpdateLog(edbInfo.EdbInfoId, 1, "", 1, "", 0, 0) } else { _ = services.AddEdbInfoUpdateLog(edbInfo.EdbInfoId, 1, "", 2, "未刷新到数据", 0, 0) } // 更新ES go logic.UpdateEs(edbInfo.EdbInfoId) br.Ret = 200 br.Success = true br.Msg = "获取成功" } // @Title 查询刷新钢联指标的接口 // @Description 查询刷新钢联指标的接口 // @Success 200 {object} models.CheckDeleteClassifyResp // @router /query/refresh [post] func (this *MySteelChemicalController) QueryRefresh() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() mysteelIndex := new(models.BaseFromMysteelChemicalIndex) list, err := mysteelIndex.GetIndexRefreshAllByMergeFile() if err != nil && err.Error() != utils.ErrNoRow() { br.Msg = "获取失败!" br.ErrMsg = "获取失败,Err:" + err.Error() return } if list == nil { list = make([]*models.BaseFromMysteelChemicalIndex, 0) } br.Ret = 200 br.Data = list br.Success = true br.Msg = "获取成功" } // @Title 处理钢联指标的接口 // @Description 处理钢联指标的接口 // @Success 200 {object} models.HandleMysteelIndexResp // @router /handle/mysteel/index [post] func (this *MySteelChemicalController) HandleMysteelIndex() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() body := this.Ctx.Input.RequestBody var req models.HandleMysteelIndexResp err := json.Unmarshal(body, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } err = services.HandleMysteelIndex(&req) if err != nil { fmt.Println("HandleMysteelIndex Err:" + err.Error()) br.Msg = "处理失败" br.ErrMsg = "处理失败,Err:" + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "处理成功" } // GetMaxFileIndex // @Title 获取最大的文件编号下标 // @Description 获取最大的文件编号下标 // @Success 200 {object} models.HandleMysteelIndexResp // @router /getMaxFileIndex [post] func (this *MySteelChemicalController) GetMaxFileIndex() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.GetMaxFileIndexReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } indexObj := new(models.BaseFromMysteelChemicalIndex) // 获取最大的文件编号下标 item, err := indexObj.GetMaxFileIndex(req.Frequency) if err != nil { return } br.Data = item br.Ret = 200 br.Success = true br.Msg = "处理成功" } // GetNoMergeIndexByFrequencyCount // @Title 获取未合并的指标总数量 // @Description 获取未合并的指标总数量 // @Success 200 {object} models.HandleMysteelIndexResp // @router /getNoMergeIndexByFrequencyCount [post] func (this *MySteelChemicalController) GetNoMergeIndexByFrequencyCount() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.GetMaxFileIndexReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } indexObj := new(models.BaseFromMysteelChemicalIndex) // 获取未合并的指标总数量 indexTotal, err := indexObj.GetNoMergeIndexByFrequencyCount(req.Frequency) if err != nil { return } br.Data = indexTotal br.Ret = 200 br.Success = true br.Msg = "处理成功" } // GetNoMergeIndexByFrequencyPage // @Title 获取未合并的指标列表 // @Description 获取未合并的指标列表 // @Success 200 {object} models.HandleMysteelIndexResp // @router /getNoMergeIndexByFrequencyPage [post] func (this *MySteelChemicalController) GetNoMergeIndexByFrequencyPage() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.GetNoMergeIndexByFrequencyPageReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } indexObj := new(models.BaseFromMysteelChemicalIndex) // 获取未合并的指标总数量 indexTotal, err := indexObj.GetNoMergeIndexByFrequencyPage(req.Frequency, req.Limit) if err != nil { return } br.Data = indexTotal br.Ret = 200 br.Success = true br.Msg = "处理成功" } // GetIndexCountByMergeFilePath // @Title 获取该文件下标已经存在多少的指标 // @Description 获取该文件下标已经存在多少的指标 // @Success 200 {object} models.HandleMysteelIndexResp // @router /getIndexCountByMergeFilePath [post] func (this *MySteelChemicalController) GetIndexCountByMergeFilePath() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.GetIndexCountByMergeFilePathReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.MergeFilePath == "" { br.Msg = "参数有误" br.ErrMsg = "参数有误, 文件路径有误" return } indexObj := new(models.BaseFromMysteelChemicalIndex) indexTotal, err := indexObj.GetIndexCountByMergeFilePath(req.MergeFilePath) if err != nil { return } br.Data = indexTotal br.Ret = 200 br.Success = true br.Msg = "获取成功" } // GetIndexCreate // @Title 获取两分钟前新增的指标 // @Description 获取两分钟前新增的指标 // @Success 200 {object} models.BaseFromMysteelChemicalIndex // @router /getIndexCreate [post] func (this *MySteelChemicalController) GetIndexCreate() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() // 终端编码 terminalCode := this.GetString("TerminalCode") indexObj := new(models.BaseFromMysteelChemicalIndex) items, err := indexObj.GetIndexCreate(terminalCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取指标失败, Err: " + err.Error() return } if items == nil { items = make([]*models.BaseFromMysteelChemicalIndex, 0) } br.Data = items br.Ret = 200 br.Success = true br.Msg = "获取成功" } // GetIndexRefreshMethanolByMergeFile // @Title 获取需要刷新的甲醇文件 // @Description 获取需要刷新的甲醇文件 // @Success 200 {object} models.BaseFromMysteelChemicalIndex // @router /getIndexRefreshMethanolByMergeFile [post] func (this *MySteelChemicalController) GetIndexRefreshMethanolByMergeFile() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() indexObj := new(models.BaseFromMysteelChemicalIndex) items, err := indexObj.GetIndexRefreshMethanolByMergeFile() if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取指标失败, Err: " + err.Error() return } if items == nil { items = make([]*models.BaseFromMysteelChemicalIndex, 0) } br.Data = items br.Ret = 200 br.Success = true br.Msg = "获取成功" } // GetIndexRefreshMethanolByTimely // @Title 获取需要及时刷新的文件 // @Description 获取需要及时刷新的文件 // @Success 200 {object} models.BaseFromMysteelChemicalIndex // @router /getIndexRefreshMethanolByTimely [post] func (this *MySteelChemicalController) GetIndexRefreshMethanolByTimely() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() indexObj := new(models.BaseFromMysteelChemicalIndex) items, err := indexObj.GetIndexRefreshMethanolByTimely() if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取指标失败, Err: " + err.Error() return } if items == nil { items = make([]*models.BaseFromMysteelChemicalIndex, 0) } br.Data = items br.Ret = 200 br.Success = true br.Msg = "获取成功" } // GetIndexByFrequency // @Title 根据频率获取指标 // @Description 根据频率获取指标 // @Success 200 {object} models.BaseFromMysteelChemicalIndex // @router /getIndexByFrequency [post] func (this *MySteelChemicalController) GetIndexByFrequency() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.GetIndexByFrequencyReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.Frequency == "" { br.Msg = "参数有误" br.ErrMsg = "参数有误" return } indexObj := new(models.BaseFromMysteelChemicalIndex) items, err := indexObj.GetIndexByFrequency(req.Frequency) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取指标失败, Err: " + err.Error() return } if items == nil { items = make([]*models.BaseFromMysteelChemicalIndex, 0) } br.Data = items br.Ret = 200 br.Success = true br.Msg = "获取成功" } // GetIndexRefreshWeek // @Title 根据周获取指标 // @Description 根据周获取指标 // @Success 200 {object} models.BaseFromMysteelChemicalIndex // @router /getIndexRefreshWeek [post] func (this *MySteelChemicalController) GetIndexRefreshWeek() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.GetIndexRefreshWeekReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.NowWeekZn == "" || req.StartTime == "" || req.EndTime == "" { br.Msg = "参数有误" br.ErrMsg = "参数有误" return } indexObj := new(models.BaseFromMysteelChemicalIndex) items, err := indexObj.GetIndexRefreshWeek(req.NowWeekZn, req.StartTime, req.EndTime) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取指标失败, Err: " + err.Error() return } if items == nil { items = make([]*models.BaseFromMysteelChemicalIndex, 0) } br.Data = items br.Ret = 200 br.Success = true br.Msg = "获取成功" } // UpdateIndex // @Title 更新指标 // @Description 更新指标 // @Success 200 string "操作成功" // @router /updateIndex [post] //func (this *MySteelChemicalController) UpdateIndex() { // br := new(models.BaseResponse).Init() // defer func() { // this.Data["json"] = br // this.ServeJSON() // }() // var req models.UpdateIndexReq // err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) // if err != nil { // br.Msg = "参数解析异常!" // br.ErrMsg = "参数解析失败,Err:" + err.Error() // return // } // if req.Item == nil { // br.Msg = "参数有误" // br.ErrMsg = "参数有误, 指标信息有误" // return // } // if len(req.UpdateCols) == 0 { // br.Msg = "参数有误" // br.ErrMsg = "参数有误, 无更新字段" // return // } // // // 更新指标 // indexObj := new(models.BaseFromMysteelChemicalIndex) // err = indexObj.UpdateIndex(req.Item, req.UpdateCols) // if err != nil { // br.Msg = "操作失败" // br.ErrMsg = "批量更新指标失败, MultiUpdateIndexByIndexCode err: " + err.Error() // return // } // // br.Ret = 200 // br.Success = true // br.Msg = "操作成功" //} // MultiUpdateIndex // @Title 批量更新指标 // @Description 批量更新指标 // @Success 200 string "操作成功" // @router /multiUpdateIndex [post] func (this *MySteelChemicalController) MultiUpdateIndex() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req []models.UpdateIndexReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if len(req) == 0 { br.Msg = "参数有误" br.ErrMsg = "参数有误, 无指标需要更新" return } // 批量更新指标 indexObj := new(models.BaseFromMysteelChemicalIndex) err = indexObj.MultiUpdateIndex(req) if err != nil { br.Msg = "操作失败" br.ErrMsg = "批量更新指标失败, MultiUpdateIndex err: " + err.Error() return } br.Ret = 200 br.Success = true br.Msg = "操作成功" } // AddMysteelIndex // @Title 处理钢联指标的接口 // @Description 处理钢联指标的接口 // @Success 200 {object} models.AddMysteelIndexResp // @router /add/mysteel/index [post] func (this *MySteelChemicalController) AddMysteelIndex() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.AddMysteelIndexResp err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } mysteelIndexObj := new(models.BaseFromMysteelChemicalIndex) indexItem, err := mysteelIndexObj.GetIndexItem(req.EdbCode) var isAdd bool if err != nil { if err.Error() == utils.ErrNoRow() { isAdd = true } else { br.Msg = "判断指标是否存在失败" br.ErrMsg = "判断指标是否存在失败,Err:" + err.Error() return } } if indexItem == nil { isAdd = true } if isAdd { mysteelIndexObj.IndexCode = req.EdbCode mysteelIndexObj.TerminalCode = req.TerminalCode mysteelIndexObj.BaseFromMysteelChemicalClassifyId = req.BaseFromMysteelChemicalClassifyId mysteelIndexObj.SysUserId = req.SysUserId mysteelIndexObj.SysUserRealName = req.SysUserRealName mysteelIndexObj.CreateTime = time.Now() mysteelIndexObj.ModifyTime = time.Now() err = mysteelIndexObj.Add() if err != nil { br.Msg = "新增指标失败" br.ErrMsg = "新增指标失败,Err:" + err.Error() return } } br.Ret = 200 br.Success = true br.Msg = "新增成功" } // GetIndexDetailByCode // @Title 获取指标详情 // @Description 获取指标详情 // @Success 200 {object} models.GetIndexDetailReq // @router /index_detail [post] func (this *MySteelChemicalController) GetIndexDetailByCode() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.GetIndexDetailReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } if req.IndexCode == "" { br.Msg = "参数有误" br.ErrMsg = "参数有误" return } indexObj := new(models.BaseFromMysteelChemicalIndex) item, err := indexObj.GetIndexItem(req.IndexCode) if err != nil { br.Msg = "获取失败" br.ErrMsg = "获取指标失败, Err: " + err.Error() return } br.Data = item br.Ret = 200 br.Success = true br.Msg = "获取成功" } // GetIndexCountByFrequency // @Title 根据频度获取指标总数量 // @Description 根据频度获取指标总数量 // @Success 200 {object} models.HandleMysteelIndexResp // @router /getIndexCountByFrequency [post] func (this *MySteelChemicalController) GetIndexCountByFrequency() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.GetMaxFileIndexReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } var condition string var pars []interface{} if req.Frequency != "" { condition += ` AND frequency = ? ` pars = append(pars, req.Frequency) } if req.EndDate != "" { condition += ` AND end_date < ? ` pars = append(pars, req.EndDate) } // 终端编码 condition += ` AND terminal_code = ? ` pars = append(pars, req.TerminalCode) condition += ` AND is_stop = 0 ` indexObj := new(models.BaseFromMysteelChemicalIndex) // 获取未合并的指标总数量 indexTotal, err := indexObj.GetIndexCountByFrequency(condition, pars) if err != nil { return } br.Data = indexTotal br.Ret = 200 br.Success = true br.Msg = "处理成功" } // GetIndexLimitByFrequency // @Title 获取未合并的指标列表 // @Description 获取未合并的指标列表 // @Success 200 {object} models.HandleMysteelIndexResp // @router /getIndexLimitByFrequency [post] func (this *MySteelChemicalController) GetIndexLimitByFrequency() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.GetNoMergeIndexByFrequencyPageReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } indexObj := new(models.BaseFromMysteelChemicalIndex) // 获取未合并的指标总数量 indexTotal, err := indexObj.GetIndexLimitByFrequency(req.Frequency, req.Limit) if err != nil { return } br.Data = indexTotal br.Ret = 200 br.Success = true br.Msg = "处理成功" } // GetIndexPageByFrequency // @Title 获取钢联指标分页数据 // @Description 获取钢联指标分页数据 // @Success 200 {object} models.HandleMysteelIndexResp // @router /getIndexPageByFrequency [post] func (this *MySteelChemicalController) GetIndexPageByFrequency() { br := new(models.BaseResponse).Init() defer func() { this.Data["json"] = br this.ServeJSON() }() var req models.GetIndexPageByFrequencyPageReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { br.Msg = "参数解析异常!" br.ErrMsg = "参数解析失败,Err:" + err.Error() return } var condition string var pars []interface{} if req.Frequency != "" { condition += ` AND frequency = ? ` pars = append(pars, req.Frequency) } if req.EndDate != "" { condition += ` AND end_date < ? ` pars = append(pars, req.EndDate) } // 终端编码 condition += ` AND terminal_code = ? ` pars = append(pars, req.TerminalCode) condition += ` AND is_stop = 0 ` indexObj := new(models.BaseFromMysteelChemicalIndex) // 获取未合并的指标总数量 indexTotal, err := indexObj.GetIndexPageByFrequency(condition, pars, req.StartSize, req.PageSize) if err != nil { return } br.Data = indexTotal br.Ret = 200 br.Success = true br.Msg = "处理成功" }