更新研发
This commit is contained in:
+44
-1067
File diff suppressed because it is too large
Load Diff
+515
-2
@@ -5,18 +5,531 @@ import (
|
||||
. "../../common"
|
||||
"../../dri/baidu"
|
||||
"fmt"
|
||||
"github.com/robertkrimen/otto"
|
||||
"github.com/xuri/excelize"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"sort"
|
||||
"strings"
|
||||
"time"
|
||||
"unicode"
|
||||
)
|
||||
|
||||
var TestCtr = Ctr{
|
||||
func analyse(companys []Map, tag Map) {
|
||||
cs := append(NewCompanys{}, companys...)
|
||||
for _, company := range companys {
|
||||
vm := otto.New()
|
||||
vm.Set("sortLevel", func(call otto.FunctionCall) otto.Value {
|
||||
AnalyseSortType = call.Argument(0).String()
|
||||
sort.Sort(cs)
|
||||
for k, v := range cs {
|
||||
if company.GetMap(AnalyseTypeName).GetFloat64(AnalyseSortType) > v.GetMap(AnalyseTypeName).GetFloat64(AnalyseSortType) {
|
||||
val, _ := vm.ToValue(k + 1)
|
||||
return val
|
||||
}
|
||||
}
|
||||
val, _ := vm.ToValue(len(cs))
|
||||
return val
|
||||
})
|
||||
|
||||
vm.Set("count", func(call otto.FunctionCall) otto.Value {
|
||||
//key:=call.Argument(0).String()
|
||||
val, _ := vm.ToValue(len(cs))
|
||||
return val
|
||||
})
|
||||
//上传数据
|
||||
uploadData := company.GetMap("upload_data")
|
||||
for k, _ := range uploadData {
|
||||
strV := uploadData.GetString(k)
|
||||
v := float64(0)
|
||||
if strV == "是" {
|
||||
v = 1
|
||||
}
|
||||
|
||||
if strings.Index(strV, "%") == len(strV)-1 && len(strV) != 0 {
|
||||
v = uploadData.GetFloat64(strings.Replace(strV, "%", "", -1)) / 100
|
||||
}
|
||||
flV := uploadData.GetFloat64(k)
|
||||
if flV != 0 && v == 0 {
|
||||
v = flV
|
||||
}
|
||||
vm.Set(k, v)
|
||||
}
|
||||
|
||||
//api采集数据
|
||||
collectData := company.GetMap("collect_data")
|
||||
for k, cv := range collectData {
|
||||
if cv == nil {
|
||||
vm.Set(k, 0)
|
||||
continue
|
||||
}
|
||||
strV := collectData.GetString(k)
|
||||
if strings.Index(strV, "万人民币") != -1 {
|
||||
strV = strings.Replace(strV, "", "万人民币", -1)
|
||||
}
|
||||
vm.Set(k, strV)
|
||||
}
|
||||
//api采集数据
|
||||
analyseData := company.GetMap("analyse")
|
||||
if analyseData == nil {
|
||||
analyseData = Map{}
|
||||
company["analyse"] = analyseData
|
||||
}
|
||||
for k, cv := range analyseData {
|
||||
vm.Set(k, cv)
|
||||
}
|
||||
//res:=Map{}
|
||||
//analyse
|
||||
|
||||
//for _,v:=range cmds{
|
||||
vm.Set("res", nil)
|
||||
_, e := vm.Run(tag.GetString("cmd"))
|
||||
if e != nil {
|
||||
fmt.Println(e)
|
||||
analyseData[tag.GetString("name")] = 0
|
||||
vm.Set(tag.GetString("name"), 0)
|
||||
continue
|
||||
}
|
||||
result, e := vm.Get("res")
|
||||
if e != nil {
|
||||
fmt.Println(e)
|
||||
analyseData[tag.GetString("name")] = 0
|
||||
vm.Set(tag.GetString("name"), 0)
|
||||
continue
|
||||
}
|
||||
if result.String() == ObjToStr(ObjToFloat64(result.String())) {
|
||||
analyseData[tag.GetString("name")] = ObjToFloat64(result.String())
|
||||
} else if result.String() == "NaN" {
|
||||
analyseData[tag.GetString("name")] = 0
|
||||
} else {
|
||||
analyseData[tag.GetString("name")] = result.String()
|
||||
}
|
||||
vm.Set(tag.GetString("name"), analyseData[tag.GetString("name")])
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
type NewCompanys []Map
|
||||
|
||||
var AnalyseSortType = ""
|
||||
var AnalyseTypeName = "analyse"
|
||||
|
||||
func (s NewCompanys) Len() int {
|
||||
return len(s)
|
||||
}
|
||||
func (s NewCompanys) Swap(i, j int) {
|
||||
s[i], s[j] = s[j], s[i]
|
||||
}
|
||||
func (s NewCompanys) Less(i, j int) bool {
|
||||
AnalyseTypeName = "upload_data"
|
||||
if s[i].GetMap(AnalyseTypeName)[AnalyseSortType] == nil {
|
||||
AnalyseTypeName = "analyse"
|
||||
}
|
||||
return s[i].GetMap(AnalyseTypeName).GetFloat64(AnalyseSortType) > s[j].GetMap(AnalyseTypeName).GetFloat64(AnalyseSortType)
|
||||
}
|
||||
|
||||
func totalAnalyse(companys []Map, tag Map, totalData Map) {
|
||||
cs := append(NewCompanys{}, companys...)
|
||||
for _, company := range companys {
|
||||
vm := otto.New()
|
||||
vm.Set("vcount", func(call otto.FunctionCall) otto.Value {
|
||||
if call.Argument(0).IsUndefined() {
|
||||
val, _ := vm.ToValue(0)
|
||||
return val
|
||||
}
|
||||
key := call.Argument(0).String()
|
||||
AnalyseTypeName := "upload_data"
|
||||
if company.GetMap(AnalyseTypeName)[key] == nil {
|
||||
AnalyseTypeName = "analyse"
|
||||
}
|
||||
num := float64(0)
|
||||
for _, v := range cs {
|
||||
if v.GetMap(AnalyseTypeName).GetFloat64(key) > 0 {
|
||||
//num++
|
||||
num = num + v.GetMap(AnalyseTypeName).GetFloat64(key)
|
||||
}
|
||||
}
|
||||
val, _ := vm.ToValue(num)
|
||||
return val
|
||||
})
|
||||
|
||||
vm.Set("count", func(call otto.FunctionCall) otto.Value {
|
||||
if call.Argument(0).IsUndefined() {
|
||||
val, _ := vm.ToValue(len(cs))
|
||||
return val
|
||||
}
|
||||
key := call.Argument(0).String()
|
||||
AnalyseTypeName := "upload_data"
|
||||
if company.GetMap(AnalyseTypeName)[key] == nil {
|
||||
AnalyseTypeName = "analyse"
|
||||
}
|
||||
num := 0
|
||||
for _, v := range cs {
|
||||
if v.GetMap(AnalyseTypeName).GetFloat64(key) > 0 {
|
||||
num++
|
||||
}
|
||||
}
|
||||
val, _ := vm.ToValue(num)
|
||||
return val
|
||||
})
|
||||
//上传数据
|
||||
uploadData := company.GetMap("upload_data")
|
||||
for k, _ := range uploadData {
|
||||
strV := uploadData.GetString(k)
|
||||
v := float64(0)
|
||||
if strV == "是" {
|
||||
v = 1
|
||||
}
|
||||
|
||||
if strings.Index(strV, "%") == len(strV)-1 && len(strV) != 0 {
|
||||
v = uploadData.GetFloat64(strings.Replace(strV, "%", "", -1)) / 100
|
||||
}
|
||||
flV := uploadData.GetFloat64(k)
|
||||
if flV != 0 && v == 0 {
|
||||
v = flV
|
||||
}
|
||||
vm.Set(k, v)
|
||||
}
|
||||
|
||||
//api采集数据
|
||||
collectData := company.GetMap("collect_data")
|
||||
for k, cv := range collectData {
|
||||
if cv == nil {
|
||||
vm.Set(k, 0)
|
||||
continue
|
||||
}
|
||||
strV := collectData.GetString(k)
|
||||
if strings.Index(strV, "万人民币") != -1 {
|
||||
strV = strings.Replace(strV, "", "万人民币", -1)
|
||||
}
|
||||
vm.Set(k, strV)
|
||||
}
|
||||
//api采集数据
|
||||
analyseData := company.GetMap("analyse")
|
||||
if analyseData == nil {
|
||||
analyseData = Map{}
|
||||
company["analyse"] = analyseData
|
||||
}
|
||||
for k, cv := range analyseData {
|
||||
vm.Set(k, cv)
|
||||
}
|
||||
//totalData:=Map{}
|
||||
//analyse
|
||||
|
||||
//for _,v:=range cmds{
|
||||
vm.Set("res", nil)
|
||||
_, e := vm.Run(tag.GetString("cmd"))
|
||||
if e != nil {
|
||||
fmt.Println(e)
|
||||
totalData[tag.GetString("name")] = 0
|
||||
vm.Set(tag.GetString("name"), 0)
|
||||
continue
|
||||
}
|
||||
result, e := vm.Get("res")
|
||||
if e != nil {
|
||||
fmt.Println(e)
|
||||
totalData[tag.GetString("name")] = 0
|
||||
vm.Set(tag.GetString("name"), 0)
|
||||
continue
|
||||
}
|
||||
if result.String() == ObjToStr(ObjToFloat64(result.String())) {
|
||||
totalData[tag.GetString("name")] = ObjToFloat64(result.String())
|
||||
} else if result.String() == "NaN" {
|
||||
totalData[tag.GetString("name")] = 0
|
||||
} else {
|
||||
totalData[tag.GetString("name")] = result.String()
|
||||
}
|
||||
vm.Set(tag.GetString("name"), totalData[tag.GetString("name")])
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func ctgAnalyse(companys []Map, tag Map, totalData, totalAnalyse Map) {
|
||||
cs := append(NewCompanys{}, companys...)
|
||||
for _, company := range companys {
|
||||
vm := otto.New()
|
||||
vm.Set("vcount", func(call otto.FunctionCall) otto.Value {
|
||||
if call.Argument(0).IsUndefined() {
|
||||
val, _ := vm.ToValue(0)
|
||||
return val
|
||||
}
|
||||
key := call.Argument(0).String()
|
||||
AnalyseTypeName := "upload_data"
|
||||
if company.GetMap(AnalyseTypeName)[key] == nil {
|
||||
AnalyseTypeName = "analyse"
|
||||
}
|
||||
num := float64(0)
|
||||
for _, v := range cs {
|
||||
if v.GetMap(AnalyseTypeName).GetFloat64(key) > 0 {
|
||||
//num++
|
||||
num = num + v.GetMap(AnalyseTypeName).GetFloat64(key)
|
||||
}
|
||||
}
|
||||
val, _ := vm.ToValue(num)
|
||||
return val
|
||||
})
|
||||
|
||||
vm.Set("count", func(call otto.FunctionCall) otto.Value {
|
||||
if call.Argument(0).IsUndefined() {
|
||||
val, _ := vm.ToValue(len(cs))
|
||||
return val
|
||||
}
|
||||
key := call.Argument(0).String()
|
||||
AnalyseTypeName := "upload_data"
|
||||
if company.GetMap(AnalyseTypeName)[key] == nil {
|
||||
AnalyseTypeName = "analyse"
|
||||
}
|
||||
num := 0
|
||||
for _, v := range cs {
|
||||
if v.GetMap(AnalyseTypeName).GetFloat64(key) > 0 {
|
||||
num++
|
||||
}
|
||||
}
|
||||
val, _ := vm.ToValue(num)
|
||||
return val
|
||||
})
|
||||
//上传数据
|
||||
uploadData := company.GetMap("upload_data")
|
||||
for k, _ := range uploadData {
|
||||
strV := uploadData.GetString(k)
|
||||
v := float64(0)
|
||||
if strV == "是" {
|
||||
v = 1
|
||||
}
|
||||
|
||||
if strings.Index(strV, "%") == len(strV)-1 && len(strV) != 0 {
|
||||
v = uploadData.GetFloat64(strings.Replace(strV, "%", "", -1)) / 100
|
||||
}
|
||||
flV := uploadData.GetFloat64(k)
|
||||
if flV != 0 && v == 0 {
|
||||
v = flV
|
||||
}
|
||||
vm.Set(k, v)
|
||||
}
|
||||
|
||||
//api采集数据
|
||||
collectData := company.GetMap("collect_data")
|
||||
for k, cv := range collectData {
|
||||
if cv == nil {
|
||||
vm.Set(k, 0)
|
||||
continue
|
||||
}
|
||||
strV := collectData.GetString(k)
|
||||
if strings.Index(strV, "万人民币") != -1 {
|
||||
strV = strings.Replace(strV, "", "万人民币", -1)
|
||||
}
|
||||
vm.Set(k, strV)
|
||||
}
|
||||
//api采集数据
|
||||
analyseData := company.GetMap("analyse")
|
||||
if analyseData == nil {
|
||||
analyseData = Map{}
|
||||
company["analyse"] = analyseData
|
||||
}
|
||||
for k, cv := range analyseData {
|
||||
vm.Set(k, cv)
|
||||
}
|
||||
//totalData:=Map{}
|
||||
//analyse
|
||||
|
||||
//for _,v:=range cmds{
|
||||
vm.Set("res", nil)
|
||||
_, e := vm.Run(tag.GetString("cmd"))
|
||||
if e != nil {
|
||||
fmt.Println(e)
|
||||
totalData[tag.GetString("name")] = 0
|
||||
vm.Set(tag.GetString("name"), 0)
|
||||
continue
|
||||
}
|
||||
result, e := vm.Get("res")
|
||||
if e != nil {
|
||||
fmt.Println(e)
|
||||
totalData[tag.GetString("name")] = 0
|
||||
vm.Set(tag.GetString("name"), 0)
|
||||
continue
|
||||
}
|
||||
|
||||
if result.String() == ObjToStr(ObjToFloat64(result.String())) {
|
||||
totalData[tag.GetString("name")] = ObjToFloat64(result.String())
|
||||
if totalAnalyse.GetMap("home_data").GetCeilFloat64(tag.GetString("name")) == 0 {
|
||||
totalData[tag.GetString("name")+"比值"] = 0
|
||||
} else {
|
||||
totalData[tag.GetString("name")+"比值"] = ObjToFloat64(result.String()) / totalAnalyse.GetMap("home_data").GetCeilFloat64(tag.GetString("name"))
|
||||
}
|
||||
|
||||
} else if result.String() == "NaN" {
|
||||
totalData[tag.GetString("name")] = 0
|
||||
totalData[tag.GetString("name")+"比值"] = 0
|
||||
} else {
|
||||
totalData[tag.GetString("name")] = result.String()
|
||||
//totalData[tag.GetString("name")+"比值"]=0
|
||||
}
|
||||
|
||||
vm.Set(tag.GetString("name"), totalData[tag.GetString("name")])
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var TestCtr = Ctr{
|
||||
"test": func(this *Context) {
|
||||
data := excel1()
|
||||
//data := excel1()
|
||||
//this.Display(0, data)
|
||||
fmt.Println(unicode.IsPunct(rune(')')))
|
||||
},
|
||||
|
||||
"industry_analyse": func(this *Context) {
|
||||
orgId := 1
|
||||
industrys := this.Db.Select("industry_analyse", "id,name", Map{"org_id": orgId})
|
||||
totalAnalyse := this.Db.Get("org_analyse", "*", Map{"org_id": orgId})
|
||||
tagCompany := this.Db.Select("tag", "*", Map{"type": 4, "ORDER": "`sort` ASC"})
|
||||
|
||||
for _, industry := range industrys {
|
||||
id := industry.GetCeilInt("id")
|
||||
companys := this.Db.Select("industry", Map{"[><]company": "company.industry_id=industry.id"},
|
||||
"company.id,company.gs,company.level,company.score,company.upload_data,company.analyse,company.industry_id", Map{"industry.id": id})
|
||||
|
||||
for _, v := range companys {
|
||||
//上传数据
|
||||
v["upload_data"] = v.GetMap("upload_data")
|
||||
v["collect_data"] = v.GetMap("collect_data")
|
||||
v["analyse"] = v.GetMap("analyse")
|
||||
}
|
||||
|
||||
//cs := append(NewCompanys{}, companys...)
|
||||
ctgAn := Map{}
|
||||
for _, tag := range tagCompany {
|
||||
ctgAnalyse(companys, tag, ctgAn, totalAnalyse)
|
||||
//fmt.Println(data)
|
||||
}
|
||||
|
||||
//ctgAn := ctgAnalyse(companys, totalAnalyse)
|
||||
data := Map{
|
||||
"modify_time": time.Now().Unix(),
|
||||
"data": ctgAn.ToJsonString(),
|
||||
}
|
||||
|
||||
this.Db.Update("industry_analyse", data, Map{"AND": Map{"org_id": orgId, "industry_id": id}})
|
||||
|
||||
}
|
||||
this.Display(0, industrys)
|
||||
},
|
||||
"total_Analyse": func(this *Context) {
|
||||
|
||||
orgId := 1
|
||||
companys := this.Db.Select("company", "*")
|
||||
for _, v := range companys {
|
||||
//上传数据
|
||||
v["upload_data"] = v.GetMap("upload_data")
|
||||
v["collect_data"] = v.GetMap("collect_data")
|
||||
v["analyse"] = v.GetMap("analyse")
|
||||
}
|
||||
|
||||
tagCompany := this.Db.Select("tag", "*", Map{"type": 4, "ORDER": "`sort` ASC"})
|
||||
//cs := append(NewCompanys{}, companys...)
|
||||
totalData := Map{}
|
||||
for _, tag := range tagCompany {
|
||||
totalAnalyse(companys, tag, totalData)
|
||||
//fmt.Println(data)
|
||||
}
|
||||
|
||||
//home_data, six_item_data, three_item_data, n_item_data := totalAnalyse(companys)
|
||||
org := this.Db.Get("org", "*", Map{"id": orgId})
|
||||
//fmt.Println(six_item_data.ToJsonString())
|
||||
|
||||
data := Map{
|
||||
"name": org.GetString("name"),
|
||||
"home_data": totalData.ToJsonString(),
|
||||
//"six_item_data": six_item_data.ToJsonString(),
|
||||
//"three_item_data": three_item_data.ToJsonString(),
|
||||
//"n_item_data": n_item_data.ToJsonString(),
|
||||
"modify_time": time.Now().Unix(),
|
||||
}
|
||||
org_analyse := this.Db.Get("org_analyse", "id", Map{"org_id": orgId})
|
||||
if org_analyse == nil {
|
||||
data["name"] = org.GetString("name")
|
||||
data["org_id"] = orgId
|
||||
data["create_time"] = time.Now().Unix()
|
||||
id := this.Db.Insert("org_analyse", data)
|
||||
data["id"] = id
|
||||
} else {
|
||||
this.Db.Update("org_analyse", data, Map{"org_id": orgId})
|
||||
}
|
||||
|
||||
this.Display(0, data)
|
||||
|
||||
},
|
||||
"analyse": func(this *Context) {
|
||||
|
||||
companys := this.Db.Select("company", "*")
|
||||
for _, v := range companys {
|
||||
//上传数据
|
||||
v["upload_data"] = v.GetMap("upload_data")
|
||||
v["collect_data"] = v.GetMap("collect_data")
|
||||
v["analyse"] = v.GetMap("analyse")
|
||||
}
|
||||
|
||||
tagCompany := this.Db.Select("tag", "*", Map{"type": 2, "ORDER": "`sort` ASC"})
|
||||
//cs := append(NewCompanys{}, companys...)
|
||||
for _, tag := range tagCompany {
|
||||
analyse(companys, tag)
|
||||
//fmt.Println(data)
|
||||
}
|
||||
|
||||
for _, c := range companys {
|
||||
this.Db.Update("company", Map{"analyse": c.GetString("analyse")}, Map{"id": c.GetCeilInt("id")})
|
||||
fmt.Println(c["analyse"])
|
||||
}
|
||||
|
||||
this.Display(0, len(companys))
|
||||
|
||||
},
|
||||
"jstest": func(this *Context) {
|
||||
vm := otto.New()
|
||||
vm.Run(`
|
||||
console.log("845458454" ); // 4
|
||||
abc = 2 + 2;
|
||||
console.log("The value of abc is " + abc); // 4
|
||||
`)
|
||||
//if value, err := vm.Get("abc"); err == nil {
|
||||
// if value_int, err := value.ToInteger(); err == nil {
|
||||
// fmt.Printf("", value_int, err)
|
||||
// }
|
||||
//}
|
||||
vm.Set("def", 11)
|
||||
vm.Run(`
|
||||
console.log("The value of def is " + def);
|
||||
// The value of def is 11
|
||||
`)
|
||||
vm.Set("xyzzy", "Nothing happens.")
|
||||
vm.Run(`
|
||||
console.log(xyzzy.length); // 16
|
||||
`)
|
||||
|
||||
value, _ := vm.Run("xyzzy.length")
|
||||
//{
|
||||
// // value is an int64 with a value of 16
|
||||
// value, _ := value.ToInteger()
|
||||
//}
|
||||
fmt.Println(value.ToInteger())
|
||||
_, err := vm.Run("abcdefghijlmnopqrstuvwxyz.length")
|
||||
if err != nil {
|
||||
// err = ReferenceError: abcdefghijlmnopqrstuvwxyz is not defined
|
||||
// If there is an error, then value.IsUndefined() is true
|
||||
//...
|
||||
fmt.Println(err)
|
||||
}
|
||||
vm.Set("sayHello", func(call otto.FunctionCall) otto.Value {
|
||||
fmt.Printf("Hello, %s.\n", call.Argument(0).String())
|
||||
return otto.Value{}
|
||||
})
|
||||
result, _ := vm.Run(`
|
||||
sayHello("Xyzzy"); // Hello, Xyzzy.
|
||||
sayHello(); // Hello, undefined
|
||||
|
||||
result = twoPlus(2.0); // 4
|
||||
`)
|
||||
fmt.Println(result.String())
|
||||
|
||||
},
|
||||
"tt": func(this *Context) {
|
||||
tag_ctg := this.Db.Get("tag_ctg", "id", Map{"name": "企业数据分析"})
|
||||
|
||||
Reference in New Issue
Block a user