146 lines
4.9 KiB
Go
146 lines
4.9 KiB
Go
package main
|
||
|
||
import (
|
||
. "code.hoteas.com/golang/hotime"
|
||
. "code.hoteas.com/golang/hotime/common"
|
||
"fmt"
|
||
"github.com/360EntSecGroup-Skylar/excelize"
|
||
"golang.org/x/net/websocket"
|
||
"os"
|
||
"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)
|
||
}
|
||
|
||
func main() {
|
||
|
||
appIns := Init("config/config.json")
|
||
appIns.Run(Router{"app": Proj{
|
||
"user": Ctr{
|
||
"test": func(that *Context) {
|
||
fmt.Println("dasdasd")
|
||
//id := that.Db.Insert("user", Map{"name": "test"})
|
||
//ok := that.Db.Update("user", Map{"name": "test1"}, Map{"name": "test"})
|
||
ps := that.Db.Select("user", "*")
|
||
p := that.Db.Get("user", "*")
|
||
//row := that.Db.Delete("user", Map{"id": id})
|
||
//that.Display(0, Slice{id, ok, ps, p, row})
|
||
that.Display(0, Slice{ps, p})
|
||
},
|
||
"download": func(that *Context) {
|
||
orgId := ObjToInt(that.Req.FormValue("org_id"))
|
||
if orgId == 0 {
|
||
that.Display(3, "参数错误")
|
||
return
|
||
}
|
||
|
||
filePath := "temp/home" + ObjToStr(orgId) + ".xlsx"
|
||
f, e := excelize.OpenFile(that.Config.GetString("tpt") + "/" + filePath)
|
||
// 设置单元格的值
|
||
questions := that.Db.Query("SELECT user.name AS user_name,user.phone,company.name AS company_name,question_company.name,question_company.question_data,question_company.status,question_company.modify_time FROM question_company INNER JOIN `user` ON question_company.`user_id`=`user`.id INNER JOIN `company` ON question_company.`company_id`=`company`.id WHERE question_company.org_id=?", orgId)
|
||
if e != nil {
|
||
f = excelize.NewFile()
|
||
}
|
||
// 创建一个工作表
|
||
f.NewSheet("企业填报")
|
||
|
||
f.DeleteSheet("Sheet1")
|
||
|
||
//cs := append(NewCompanys{}, companys...)
|
||
f.SetCellValue("企业填报", convertToTitle(1)+"1", "调查名")
|
||
f.SetCellValue("企业填报", convertToTitle(2)+"1", "企业名")
|
||
f.SetCellValue("企业填报", convertToTitle(3)+"1", "姓名")
|
||
f.SetCellValue("企业填报", convertToTitle(4)+"1", "手机号")
|
||
f.SetCellValue("企业填报", convertToTitle(5)+"1", "状态")
|
||
f.SetCellValue("企业填报", convertToTitle(6)+"1", "修改时间")
|
||
for k, question := range questions {
|
||
//企业基础信息
|
||
f.SetCellValue("企业填报", convertToTitle(1)+ObjToStr(k+5), question.GetString("name"))
|
||
f.SetCellValue("企业填报", convertToTitle(2)+ObjToStr(k+5), question.GetString("company_name"))
|
||
f.SetCellValue("企业填报", convertToTitle(3)+ObjToStr(k+5), question.GetString("user_name"))
|
||
f.SetCellValue("企业填报", convertToTitle(4)+ObjToStr(k+5), question.GetString("phone"))
|
||
f.SetCellValue("企业填报", convertToTitle(5)+ObjToStr(k+5), question.GetString("status"))
|
||
f.SetCellValue("企业填报", convertToTitle(6)+ObjToStr(k+5), time.Unix(question.GetCeilInt64("modify_time"), 0).Format("2006-01-02 15:04"))
|
||
//企业问题信息基础信息
|
||
questionData := question.GetSlice("question_data")
|
||
for k1, _ := range questionData {
|
||
v1 := questionData.GetMap(k1)
|
||
if k == 0 {
|
||
f.SetCellValue("企业填报", convertToTitle(k1+7)+"1", v1.GetString("label"))
|
||
f.SetCellValue("企业填报", convertToTitle(k1+7)+"2", v1.GetString("unit"))
|
||
f.SetCellValue("企业填报", convertToTitle(k1+7)+"3", v1.GetString("remarks"))
|
||
f.SetCellValue("企业填报", convertToTitle(k1+7)+"4", v1.GetString("type"))
|
||
}
|
||
value := v1.GetString("value")
|
||
extend := v1.GetSlice("extend")
|
||
if extend != nil && len(extend) > 0 {
|
||
for k2, _ := range extend {
|
||
v2 := extend.GetMap(k2)
|
||
value = value + ";" + v2.GetString("value")
|
||
}
|
||
}
|
||
|
||
f.SetCellValue("企业填报", convertToTitle(k1+7)+ObjToStr(k+5), value)
|
||
|
||
}
|
||
|
||
//break
|
||
|
||
}
|
||
|
||
os.MkdirAll(that.Config.GetString("tpt")+"/temp/", os.ModeDir)
|
||
// 根据指定路径保存文件
|
||
if err := f.SaveAs(that.Config.GetString("tpt") + "/" + filePath); err != nil {
|
||
fmt.Println(err)
|
||
that.Display(4, "输出异常")
|
||
return
|
||
}
|
||
|
||
//}
|
||
f.Save()
|
||
that.Resp.Header().Set("Location", "/"+filePath)
|
||
that.Resp.WriteHeader(307) //关键在这里!
|
||
that.Display(0, filePath)
|
||
|
||
},
|
||
|
||
"websocket": func(that *Context) {
|
||
hdler := websocket.Handler(func(ws *websocket.Conn) {
|
||
for true {
|
||
msg := make([]byte, 5120)
|
||
n, err := ws.Read(msg)
|
||
|
||
if err != nil {
|
||
return
|
||
}
|
||
fmt.Printf("Receive: %s\n", msg[:n])
|
||
|
||
send_msg := "[" + string(msg[:n]) + "]"
|
||
m, err := ws.Write([]byte(send_msg))
|
||
if err != nil {
|
||
return
|
||
}
|
||
fmt.Printf("Send: %s\n", msg[:m])
|
||
}
|
||
})
|
||
hdler.ServeHTTP(that.Resp, that.Req)
|
||
},
|
||
}}})
|
||
|
||
}
|