package services import ( "context" "encoding/json" "eta/eta_data_analysis/models" "eta/eta_data_analysis/services/base_from_yongyi" "eta/eta_data_analysis/utils" "fmt" "github.com/tealeg/xlsx" "time" ) /* 日度-商品猪出栏价 日度-商品猪标肥价差 日度-商品猪全国均价和宰量 日度-屠宰企业屠宰量 周度-商品猪出栏价 周度-体重 周度-屠宰厂宰前活猪重 周度-各体重段价差 周度-50公斤二元母猪价格 周度-规模场15公斤仔猪出栏价 周度-宰后结算价 周度-冻品库存 周度-冻品库存多样本 周度-猪肉价(前三等级白条均价) 月度出栏完成率 月度计划出栏量 月度-能繁母猪存栏(2020年2月新增) 月度-小猪存栏(2020年5月新增) 月度-中猪存栏(2020年5月新增) 月度-大猪存栏(2020年5月新增) 月度-商品猪出栏量 */ func HandleYongyiExcelDaily(cont context.Context) (err error) { filePath := fmt.Sprintf("%s/%s_day.xlsx", utils.YongyiFilePath, time.Now().Format(utils.FormatDate)) xlFile, err := xlsx.OpenFile(filePath) if err != nil { err = fmt.Errorf("打开文件失败, Err: %s", err) utils.FileLog.Info(fmt.Sprintf("打开文件:%s 失败, Err: %s", filePath, err)) return } terminalCode := "" for _, sheet := range xlFile.Sheet { var indexList []*models.YongyiExcelIndex switch sheet.Name { case "出栏价": indexList, err = base_from_yongyi.HandleYongyiExcelDaily1(sheet) case "标肥价差": indexList, err = base_from_yongyi.HandleYongyiExcelDaily2(sheet) case "价格+宰量": indexList, err = base_from_yongyi.HandleYongyiExcelDaily3(sheet) case "屠宰企业日度屠宰量": indexList, err = base_from_yongyi.HandleYongyiExcelDaily4(sheet) default: continue } if err != nil { utils.FileLog.Info(fmt.Sprintf("解析sheet:%s 失败, Err: %s", sheet.Name, err)) continue } if len(indexList) > 0 { params := make(map[string]interface{}) params["List"] = indexList params["TerminalCode"] = terminalCode result, e := PostEdbLib(params, utils.LIB_ROUTE_YONGYI_HANDLE) if e != nil { b, _ := json.Marshal(params) utils.FileLog.Info(fmt.Sprintf("sheet :%s PostEdbLib err: %s, params: %s", sheet.Name, e.Error(), string(b))) return } resp := new(models.BaseEdbLibResponse) if e := json.Unmarshal(result, &resp); e != nil { utils.FileLog.Info(fmt.Sprintf("sheet :%s json.Unmarshal err: %s", sheet.Name, e)) continue } if resp.Ret != 200 { utils.FileLog.Info(fmt.Sprintf("sheet :%s Msg: %s, ErrMsg: %s", sheet.Name, resp.Msg, resp.ErrMsg)) continue } } } return } func HandleYongyiExcelWeekly(cont context.Context) (err error) { week := time.Now().Weekday() if week != time.Thursday { //每周四,处理 return } filePath := fmt.Sprintf("%s/%s_week.xlsx", utils.YongyiFilePath, time.Now().Format(utils.FormatDate)) xlFile, err := xlsx.OpenFile(filePath) if err != nil { err = fmt.Errorf("打开文件失败, Err: %s", err) utils.FileLog.Info(fmt.Sprintf("打开文件:%s 失败, Err: %s", filePath, err)) return } terminalCode := "" for _, sheet := range xlFile.Sheet { var indexList []*models.YongyiExcelIndex switch sheet.Name { case "周度-商品猪出栏价": indexList, err = base_from_yongyi.HandleYongyiExcelWeekly1(sheet) case "周度-体重": indexList, err = base_from_yongyi.HandleYongyiExcelWeekly2(sheet) case "周度-屠宰厂宰前活猪重": indexList, err = base_from_yongyi.HandleYongyiExcelWeekly3(sheet) case "周度-各体重段价差": indexList, err = base_from_yongyi.HandleYongyiExcelWeekly4(sheet) case "周度-50公斤二元母猪价格", "周度-规模场15公斤仔猪出栏价", "周度-宰后结算价", "周度-冻品库存", "周度-猪肉价(前三等级白条均价)": indexList, err = base_from_yongyi.HandleYongyiExcelWeekly5(sheet) case "周度-冻品库存多样本", "月度出栏完成率": indexList, err = base_from_yongyi.HandleYongyiExcelWeekly6(sheet) case "月度计划出栏量": indexList, err = base_from_yongyi.HandleYongyiExcelWeekly7(sheet) case "月度-能繁母猪存栏(2020年2月新增)": indexList, err = base_from_yongyi.HandleYongyiExcelWeekly8(sheet) case "月度-小猪存栏(2020年5月新增)", "月度-中猪存栏(2020年5月新增)", "月度-大猪存栏(2020年5月新增)": indexList, err = base_from_yongyi.HandleYongyiExcelWeekly9(sheet) case "月度-商品猪出栏量": indexList, err = base_from_yongyi.HandleYongyiExcelWeekly10(sheet) default: continue } if err != nil { utils.FileLog.Info(fmt.Sprintf("解析sheet:%s 失败, Err: %s", sheet.Name, err)) continue } if len(indexList) > 0 { params := make(map[string]interface{}) params["List"] = indexList params["TerminalCode"] = terminalCode result, e := PostEdbLib(params, utils.LIB_ROUTE_YONGYI_HANDLE) if e != nil { b, _ := json.Marshal(params) utils.FileLog.Info(fmt.Sprintf("sheet :%s PostEdbLib err: %s, params: %s", sheet.Name, e.Error(), string(b))) return } resp := new(models.BaseEdbLibResponse) if e := json.Unmarshal(result, &resp); e != nil { utils.FileLog.Info(fmt.Sprintf("sheet :%s json.Unmarshal err: %s", sheet.Name, e)) continue } if resp.Ret != 200 { utils.FileLog.Info(fmt.Sprintf("sheet :%s Msg: %s, ErrMsg: %s", sheet.Name, resp.Msg, resp.ErrMsg)) continue } } } return }