package app import ( . "../../../hotime" . "../../common" "fmt" "github.com/xuri/excelize" "os" "sort" "time" ) func convertToTitle(columnNumber int) string { var res []byte for columnNumber > 0 { a := columnNumber % 26 if a == 0 { a = 26 } res = append(res, 'A'+byte(a-1)) columnNumber = (columnNumber - a) / 26 } // 上面输出的res是反着的,前后交换 for i, n := 0, len(res); i < n/2; i++ { res[i], res[n-1-i] = res[n-1-i], res[i] } return string(res) } var analyseCtr = Ctr{ "home_data": func(this *Context) { orgId := ObjToInt(this.Req.FormValue("org_id")) if orgId == 0 { this.Display(3, "参数错误") return } res := this.Db.Get("org_analyse", "*", Map{"org_id": orgId}) if res == nil { this.Display(4, "找不到该数据") return } res["home_data"] = res.GetMap("home_data") res["six_item_data"] = res.GetMap("six_item_data") res["three_item_data"] = res.GetMap("three_item_data") res["n_item_data"] = res.GetMap("n_item_data") this.Display(0, res) }, "home_excel": func(this *Context) { orgId := ObjToInt(this.Req.FormValue("org_id")) if orgId == 0 { this.Display(3, "参数错误") return } res := this.Db.Get("org_analyse", "*", Map{"org_id": orgId}) if res == nil { this.Display(4, "找不到该数据") return } homeData := res.GetMap("home_data") sixItemData := res.GetMap("six_item_data") threeItemData := res.GetMap("three_item_data") nItemData := res.GetMap("n_item_data") filePath := "temp/home" + ObjToStr(orgId) + ".xlsx" f, e := excelize.OpenFile(this.Config.GetString("tpt") + "/" + filePath) // 设置单元格的值 tagCompany1 := this.Db.Select("tag", "*", Map{"AND": Map{"type": 2, "org_id": orgId}, "ORDER": Slice{"`sort` DESC", "id ASC"}}) if e != nil { f = excelize.NewFile() // 创建一个工作表 f.NewSheet("企业分析") f.NewSheet("IEDC全局分析") // 创建一个工作表 f.NewSheet("“6”项量化") f.NewSheet("“3”项定性") f.NewSheet("“N”项特色") f.DeleteSheet("Sheet1") //cs := append(NewCompanys{}, companys...) f.SetCellValue("企业分析", convertToTitle(1)+"1", "企业名") for k, tag := range tagCompany1 { f.SetCellValue("企业分析", convertToTitle(k+2)+"1", tag.GetString("name")) } // 设置单元格的值 f.SetCellValue("IEDC全局分析", "A1", "指标项") f.SetCellValue("IEDC全局分析", "B1", "指标值") // 设置单元格的值 f.SetCellValue("“6”项量化", "A1", "指标项") f.SetCellValue("“6”项量化", "B1", "指标值") // 设置单元格的值 f.SetCellValue("“3”项定性", "A1", "指标项") f.SetCellValue("“3”项定性", "B1", "指标值") // 设置单元格的值 f.SetCellValue("“N”项特色", "A1", "指标项") f.SetCellValue("“N”项特色", "B1", "指标值") os.MkdirAll(this.Config.GetString("tpt")+"/temp/", os.ModeDir) // 根据指定路径保存文件 if err := f.SaveAs(this.Config.GetString("tpt") + "/" + filePath); err != nil { fmt.Println(err) this.Display(4, "输出异常") return } } run := func(str string, data Map, f *excelize.File) { var keys []string for k := range data { keys = append(keys, k) } //按字典升序排列 sort.Strings(keys) for k, v := range keys { // 设置单元格的值 f.SetCellValue(str, "A"+ObjToStr(k+2), v) f.SetCellValue(str, "B"+ObjToStr(k+2), data[v]) } } run("IEDC全局分析", homeData, f) run("“6”项量化", sixItemData, f) run("“3”项定性", threeItemData, f) run("“N”项特色", nItemData, f) //f.SetCellValue("Sheet1", "B2", 100) companys := this.Db.Select("company", "*", Map{"AND": Map{"org_id": orgId}, "ORDER": "`analyse`->'$.\"总排名\"' ASC"}) for k, v := range companys { //上传数据 upload_data := v.GetMap("upload_data") collect_data := v.GetMap("collect_data") analysess := v.GetMap("analyse") //total:=Map{} //for kk { // //} f.SetCellValue("企业分析", convertToTitle(1)+ObjToStr(k+2), v.GetString("name")) for k1, tag := range tagCompany1 { if analysess[tag.GetString("sn")] != nil { f.SetCellValue("企业分析", convertToTitle(k1+2)+ObjToStr(k+2), analysess[tag.GetString("sn")]) } if upload_data[tag.GetString("sn")] != nil { f.SetCellValue("企业分析", convertToTitle(k1+2)+ObjToStr(k+2), upload_data[tag.GetString("sn")]) } if collect_data[tag.GetString("sn")] != nil { f.SetCellValue("企业分析", convertToTitle(k1+2)+ObjToStr(k+2), collect_data[tag.GetString("sn")]) } } } f.Save() this.Resp.Header().Set("Location", "/"+filePath) this.Resp.WriteHeader(307) //关键在这里! this.Display(0, filePath) }, "home1_data": func(this *Context) { orgId := ObjToInt(this.Req.FormValue("org_id")) if orgId == 0 { this.Display(3, "参数错误") return } res := this.Db.Get("org_analyse", "*", Map{"org_id": orgId}) if res == nil { this.Display(4, "找不到该数据") return } res["home1_data"] = res.GetMap("home1_data") res["six_item_data"] = res.GetMap("six_item_data") res["three_item_data"] = res.GetMap("three_item_data") res["n_item_data"] = res.GetMap("n_item_data") this.Display(0, res) }, "ctg": func(this *Context) { orgId := ObjToInt(this.Req.FormValue("org_id")) ctgID := ObjToInt(this.Req.FormValue("ctg_id")) if orgId == 0 || ctgID == 0 { this.Display(3, "参数错误") return } res := this.Db.Get("category_analyse", "*", Map{"AND": Map{"org_id": orgId, "category_id": ctgID}}) if res == nil { this.Display(4, "找不到该数据") return } res["data"] = res.GetMap("data") res1 := this.Db.Get("org_analyse", "home_data", Map{"org_id": orgId}) res["home"] = res1.GetMap("home_data") this.Display(0, res) }, "industrys": func(this *Context) { orgId := ObjToInt(this.Req.FormValue("org_id")) if orgId == 0 { this.Display(3, "参数错误") return } res := this.Db.Select("industry_analyse", "industry_id,name", Map{"org_id": orgId}) if res == nil { this.Display(4, "找不到该数据") return } this.Display(0, res) }, "industry": func(this *Context) { orgId := ObjToInt(this.Req.FormValue("org_id")) industryId := ObjToInt(this.Req.FormValue("industry_id")) if orgId == 0 || industryId == 0 { this.Display(3, "参数错误") return } res := this.Db.Get("industry_analyse", "*", Map{"AND": Map{"org_id": orgId, "industry_id": industryId}}) if res == nil { this.Display(4, "找不到该数据") return } res["data"] = res.GetMap("data") res1 := this.Db.Get("org_analyse", "name,home_data", Map{"org_id": orgId}) res["home"] = res1.GetMap("home_data") res["home_name"] = res1.GetString("name") this.Display(0, res) }, "industry_excel": func(this *Context) { orgId := ObjToInt(this.Req.FormValue("org_id")) industryId := ObjToInt(this.Req.FormValue("industry_id")) if orgId == 0 || industryId == 0 { this.Display(3, "参数错误") return } res := this.Db.Get("industry_analyse", "*", Map{"AND": Map{"org_id": orgId, "industry_id": industryId}}) if res == nil { this.Display(4, "找不到该数据") return } res["data"] = res.GetMap("data") //res1 := this.Db.Get("org_analyse", "name,home_data", Map{"org_id": orgId}) //res["home"] = res1.GetMap("home_data") //res["home_name"] = res1.GetString("name") filePath := "temp/industry" + ObjToStr(industryId) + "x" + ObjToStr(orgId) + ".xlsx" f, e := excelize.OpenFile(this.Config.GetString("tpt") + "/" + filePath) if e != nil { f = excelize.NewFile() // 创建一个工作表 f.NewSheet(res.GetString("name")) f.DeleteSheet("Sheet1") // 设置单元格的值 f.SetCellValue(res.GetString("name"), "A1", "指标项") f.SetCellValue(res.GetString("name"), "B1", "指标值") os.MkdirAll(this.Config.GetString("tpt")+"/temp/", os.ModeDir) // 根据指定路径保存文件 if err := f.SaveAs(this.Config.GetString("tpt") + "/" + filePath); err != nil { fmt.Println(err) this.Display(4, "输出异常") return } } run := func(str string, data Map, f *excelize.File) { var keys []string for k := range data { keys = append(keys, k) } //按字典升序排列 sort.Strings(keys) for k, v := range keys { // 设置单元格的值 f.SetCellValue(str, "A"+ObjToStr(k+2), v) f.SetCellValue(str, "B"+ObjToStr(k+2), data[v]) } } run(res.GetString("name"), res.GetMap("data"), f) //f.SetCellValue("Sheet1", "B2", 100) f.Save() this.Resp.Header().Set("Location", "/"+filePath) this.Resp.WriteHeader(307) //关键在这里! this.Display(0, filePath) }, "map": func(this *Context) { orgId := ObjToInt(this.Req.FormValue("org_id")) industryId := ObjToInt(this.Req.FormValue("industry_id")) //if orgId == 0 || industryId == 0 { // this.Display(3, "参数错误") // return //} page := ObjToInt(this.Req.FormValue("page")) pageSize := ObjToInt(this.Req.FormValue("pageSize")) search := this.Req.FormValue("search") where := Map{} levelStr := this.Req.FormValue("level") if levelStr != "" { where["level"] = ObjToInt(levelStr) } if orgId != 0 { where["org_id"] = orgId } if industryId != 0 { where["industry_id"] = industryId } if search != "" { where["name[~]"] = search } if len(where) > 1 { where = Map{"AND": where} } if page == 0 { page = 1 } if pageSize == 0 { pageSize = 10 } count := this.Db.Count("company", where) companys := this.Db.Page(page, pageSize).PageSelect("company", Map{"[><]industry": "company.industry_id=industry.id"}, "company.id,company.collect_data,company.name,company.level,company.address,company.score,company.lat,company.lng,company.category_id,industry.name AS industry_name,company.industry_id", where) for _, res := range companys { res["collect_data"] = res.GetMap("collect_data") //if res.GetMap("collect_data") == nil { // path := "company/" + Md5(res.GetString("name")) + time.Now().Format("/200601021504.json") // // data := getCompany(res.GetString("name"), this.Config.GetString("tpt")+"/"+path) // // if len(data) != 0 { // data["path"] = path // re := this.Db.Update("company", Map{"collect_data": data.ToJsonString(), // "address": data.GetString("companyAddress"), // "sn": data.GetString("creditNo"), // "unit": data.GetString("authority"), // }, Map{"id": res.GetCeilInt("id")}) // fmt.Println(re) // res["collect_data"] = data // res["address"] = data.GetString("companyAddress") // res["sn"] = data.GetString("creditNo") // res["unit"] = data.GetString("authority") // } //} } this.Display(0, Map{"count": count, "pageSize": pageSize, "data": companys}) }, "updateCompany": func(this *Context) { lng := ObjToFloat64(this.Req.FormValue("lng")) lat := ObjToFloat64(this.Req.FormValue("lat")) id := ObjToInt(this.Req.FormValue("id")) if lng == 0 || lat == 0 || id == 0 { this.Display(3, "请求异常") return } re := this.Db.Update("company", Map{"lng": lng, "lat": lat}, Map{"id": id}) if re == 0 { this.Display(4, "更新失败") return } this.Display(0, "更新成功") }, "companys": func(this *Context) { page := ObjToInt(this.Req.FormValue("page")) pageSize := ObjToInt(this.Req.FormValue("pageSize")) orgId := ObjToInt(this.Req.FormValue("org_id")) search := this.Req.FormValue("search") sort := this.Req.FormValue("sort") where := Map{"state": 0} levelStr := this.Req.FormValue("level") if levelStr != "" { where["level"] = ObjToInt(levelStr) } industryId := ObjToInt(this.Req.FormValue("industry_id")) if industryId != 0 { where["industry_id"] = industryId } if orgId != 0 { where["org_id"] = orgId } if search != "" { where["name[~]"] = search } if len(where) > 1 { where = Map{"AND": where} } if sort != "" { where["ORDER"] = sort } else { where["ORDER"] = "score DESC" } if page == 0 { page = 1 } if pageSize == 0 { pageSize = 10 } count := this.Db.Count("company", where) companys := this.Db.Page(page, pageSize).PageSelect("company", "*", where) for _, res := range companys { analyse := res.GetMap("analyse") if analyse != nil { for k, v := range analyse { if ADataType[k] != nil { analyse[ADataType.GetString(k)] = v } } res["analyse"] = analyse } res["upload_data"] = res.GetMap("upload_data") res["collect_data"] = res.GetMap("collect_data") res["collect_data"] = res.GetMap("collect_data") //if res.GetMap("collect_data") == nil && page == 1 { // go func(res Map, this *Context) { // path := "company/" + Md5(res.GetString("name")) + time.Now().Format("/200601021504.json") // // data := getCompany(res.GetString("name"), this.Config.GetString("tpt")+"/"+path) // // if len(data) != 0 { // data["path"] = path // this.Db.Update("company", Map{"collect_data": data.ToJsonString(), // "address": data.GetString("companyAddress"), // "sn": data.GetString("creditNo"), // "unit": data.GetString("authority"), // }, Map{"id": res.GetCeilInt("id")}) // res["collect_data"] = data // } // }(res, this) //} } this.Display(0, Map{"count": count, "pageSize": pageSize, "data": companys}) }, "company": func(this *Context) { id := ObjToInt(this.Req.FormValue("id")) if id == 0 { this.Display(3, "参数错误") return } res := this.Db.Get("company", "*", Map{"id": id}) if res == nil { this.Display(4, "找不到该数据") return } analyse := res.GetMap("analyse") if analyse != nil { for k, v := range analyse { if ADataType[k] != nil { analyse[ADataType.GetString(k)] = v } } res["analyse"] = analyse } analyse1 := res.GetMap("analyse1") if analyse1 != nil { for k, v := range analyse1 { if ADataType[k] != nil { analyse1[ADataType.GetString(k)] = v } } res["analyse1"] = analyse1 } res["upload_data"] = res.GetMap("upload_data") res["collect_data"] = res.GetMap("collect_data") if res.GetMap("collect_data") == nil { go func(res Map) { path := "company/" + Md5(res.GetString("name")) + time.Now().Format("/200601021504.json") data := getCompany(res.GetString("name"), this.Config.GetString("tpt")+"/"+path) if len(data) != 0 { data["path"] = path this.Db.Update("company", Map{"collect_data": data.ToJsonString()}, Map{"id": res.GetCeilInt("id")}) res["collect_data"] = data } }(res) } this.Display(0, res) }, "company_upload": func(this *Context) { id := ObjToInt(this.Req.FormValue("id")) if id == 0 { this.Display(3, "参数错误") return } res := this.Db.Get("company", "upload_data,org_id", Map{"id": id}) if res == nil { this.Display(4, "找不到该数据") return } uploadData := res.GetMap("upload_data") tags := this.Db.Select("tag", "name,sn,`unit`,description", Map{"AND": Map{"type": 0, "org_id": res.GetCeilInt("org_id")}}) for _, v := range tags { v["value"] = uploadData[v.GetString("sn")] } this.Display(0, tags) }, }