mirror of
https://gitee.com/BDWare/agent-backend
synced 2025-01-10 01:44:14 +00:00
300 lines
11 KiB
Plaintext
300 lines
11 KiB
Plaintext
import "loadResource.yjs"
|
||
contract AppDataContract{
|
||
function onCreate(arg){
|
||
var ret =
|
||
executeContract("AppDataSource","apply","我是数据分析合约,合约名称DataAnalysis");
|
||
print("onCreate:"+ret);
|
||
return ret;
|
||
}
|
||
export function getMainFrame(arg){
|
||
return "/html/main.html";
|
||
}
|
||
|
||
export function connectDBAndQueryChengjiao(args) {
|
||
args = JSON.parse(args);
|
||
if (args["type"] == "chengjiao") {
|
||
//TODO change!
|
||
if (this.ret_chengjiao != null && this.ret_chengjiao[args["district"]] != null) {
|
||
print("find!");
|
||
return JSON.stringify(this.ret_chengjiao[args["district"]]);
|
||
}
|
||
if (this.houselist_chengjiao == null || this.districtDict_chengjiao == null || this.bussinessDict_chengjiao == null) {
|
||
this.houselist_chengjiao = [];
|
||
var houselist = this.houselist_chengjiao;
|
||
var districtDict = {
|
||
};
|
||
var pattern = /朝阳|西城|丰台|海淀|密云|东城|昌平|怀柔|大兴|通州|房山|石景山|平谷|顺义|延庆|门头沟/g;
|
||
var bussinessDict2 = {
|
||
};
|
||
for (var i = 0; i < houselist.length; i++) {
|
||
var addr = houselist[i]["district"];
|
||
var district = addr.match(pattern);
|
||
if (district == null)
|
||
continue;
|
||
district = district[0];
|
||
if (district.length > 5)
|
||
continue;
|
||
if (districtDict[district] == null)
|
||
districtDict[district] = [];
|
||
if (bussinessDict2[district] == null)
|
||
bussinessDict2[district] = {
|
||
};
|
||
var buss = houselist[i]["bussiness"];
|
||
if (bussinessDict2[district][buss] == null)
|
||
bussinessDict2[district][buss] = [];
|
||
var item = {};
|
||
if (houselist[i]["price"] == null || houselist[i]["area"] == null)
|
||
continue;
|
||
if (houselist[i]["roomNum"] == null)
|
||
continue;
|
||
var unitPrice = houselist[i]["price"].replace("挂牌", "").replace("万", "");
|
||
unitPrice = parseInt(unitPrice);
|
||
houselist[i]["price"] = unitPrice;
|
||
item["price"] = unitPrice;
|
||
item["roomNum"] = houselist[i]["roomNum"];
|
||
item["area"] = parseInt(houselist[i]["area"].replace("平米", ""));
|
||
houselist[i]["area"] = item["area"];
|
||
item["district"] = houselist[i]["district"];
|
||
item["bussiness"] = houselist[i]["bussiness"];
|
||
item["buildingAge"] = houselist[i]["buildingAge"].replace("塔结合", "").replace("年建板", "").replace("楼", "");
|
||
districtDict[district].push(item);
|
||
bussinessDict2[district][buss].push(item);
|
||
}
|
||
districtDict["延庆"] = [];
|
||
districtDict["怀柔"] = [];
|
||
bussinessDict2["延庆"] = {
|
||
};
|
||
bussinessDict2["怀柔"] = {
|
||
};
|
||
this.districtDict_chengjiao = districtDict;
|
||
var districtnames = Object.keys(districtDict);
|
||
var bussinessDict = {
|
||
};
|
||
for (var i = 0; i < districtnames.length; i++) {
|
||
var district = districtnames[i];
|
||
bussinessDict[district] = {
|
||
};
|
||
var desc = function (a, b) {
|
||
return (bussinessDict2[district][a].length < bussinessDict2[district][b].length) ? 1 : -1;
|
||
};
|
||
var bussnames = (Object.keys(bussinessDict2[district])).sort(desc);
|
||
var len = bussnames.length;
|
||
if (len > 20)
|
||
len = 20;
|
||
for (j = 0; j < len; j++) {
|
||
bussinessDict[district][bussnames[j]] = bussinessDict2[district][bussnames[j]];
|
||
}
|
||
}
|
||
this.bussinessDict_chengjiao = bussinessDict;
|
||
}
|
||
var houselist = this.houselist_chengjiao;
|
||
var districtDict = this.districtDict_chengjiao;
|
||
var bussinessDict = this.bussinessDict_chengjiao;
|
||
var districtkeys = Object.keys(districtDict);
|
||
var fig1 = [];
|
||
for (var j = 0; j < districtkeys.length; j++) {
|
||
var key = districtkeys[j];
|
||
var item = {
|
||
}
|
||
var name = key + "区";
|
||
if (key == "延庆" || key == "密云")
|
||
name = key + "县";
|
||
item["name"] = name;
|
||
item["value"] = {
|
||
};
|
||
item["value"]["num"] = districtDict[key].length;
|
||
var sumPrice = 0;
|
||
for (var i = 0; i < districtDict[key].length; i++) {
|
||
if (districtDict[key][i]["price"] >= 0 && districtDict[key][i]["price"] <= 10000000)
|
||
sumPrice += districtDict[key][i]["price"];
|
||
}
|
||
var avgPrice = 0;
|
||
if (districtDict[key].length > 0) {
|
||
avgPrice = sumPrice / districtDict[key].length;
|
||
}
|
||
item["value"]["avgPrice"] = avgPrice.toFixed(2);
|
||
fig1.push(item);
|
||
}
|
||
var houselist2 = houselist;
|
||
if (args["district"] != "" && districtDict[args["district"]] != null) {
|
||
houselist2 = districtDict[args["district"]];
|
||
}
|
||
var fig2 = [];
|
||
var priceInterval = ["<200w", "200-400w", "400-600w", "600-800w", "800-1000w", ">1000w"];
|
||
var houseNum = [0, 0, 0, 0, 0, 0, 0];
|
||
for (var i = 0; i < houselist2.length; i++) {
|
||
if (houselist2[i]["price"] < 200) {
|
||
houseNum[0] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 200 && houselist2[i]["price"] < 400) {
|
||
houseNum[1] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 400 && houselist2[i]["price"] < 600) {
|
||
houseNum[2] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 600 && houselist2[i]["price"] < 800) {
|
||
houseNum[3] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 800 && houselist2[i]["price"] < 1000) {
|
||
houseNum[4] += 1;
|
||
}
|
||
if (houselist2[i]["price"] >= 1000) {
|
||
houseNum[5] += 1;
|
||
}
|
||
}
|
||
var cnt = 0;
|
||
for (var i = 0; i < priceInterval.length; i++) {
|
||
var item = {
|
||
};
|
||
cnt += houseNum[i];
|
||
item["name"] = priceInterval[i];
|
||
item["value"] = cnt;
|
||
fig2.push(item);
|
||
}
|
||
var districtDict2 = districtDict;
|
||
if (args["district"] != "" && districtDict[args["district"]] != null) {
|
||
districtDict2 = bussinessDict[args["district"]];
|
||
districtkeys = Object.keys(bussinessDict[args["district"]]);
|
||
}
|
||
var fig3 = [];
|
||
var tmpList = [];
|
||
var desc = function (x, y) {
|
||
return (x["value"] < y["value"]) ? 1 : -1;
|
||
}
|
||
for (var i = 0; i < districtkeys.length; i++) {
|
||
var item = {
|
||
"name": districtkeys[i]};
|
||
item["value"] = districtDict2[districtkeys[i]].length;
|
||
if (item["value"] >= 0 && item["value"] < 10000000000)
|
||
tmpList.push(item);
|
||
}
|
||
tmpList.sort(desc);
|
||
var len = tmpList.length;
|
||
if (len > 50) len = 50;
|
||
for (var i = 0; i < len; i++) {
|
||
fig3.push(tmpList[i]);
|
||
}
|
||
var fig4 = [];
|
||
var roomTypeName = ["一居", "二居", "三居", "四居及以上"];
|
||
var areaSizeName = ["50m2以下", "50-80m2", "80-110m2", "110-150m2", "150-300m2", ">300m2"];
|
||
var priceName = ["<200w", "200-400w", "400-600w", "600-800w", "800-1000w", ">1000w"];
|
||
var yearName = ["<5年", "5-10年", "10-15年", "15-20年", "20-30年", ">30年"];
|
||
for (var k = 0; k < districtkeys.length; k++) {
|
||
var district = districtkeys[k];
|
||
var districtItem = {
|
||
"name": district};
|
||
districtItem["value"] = {
|
||
"roomType": [], "areaSize": [], "price": [], "age": []};
|
||
var roomTypeNum = [0, 0, 0, 0];
|
||
var areaSizeNum = [0, 0, 0, 0, 0, 0];
|
||
var priceNum = [0, 0, 0, 0, 0, 0];
|
||
var yearNum = [0, 0, 0, 0, 0, 0];
|
||
for (var j = 0; j < districtDict2[district].length; j++) {
|
||
var house = districtDict2[district][j];
|
||
var flag = false;
|
||
if (house["roomNum"].match("1室") != null) {
|
||
roomTypeNum[0] += 1;
|
||
flag = true;
|
||
}
|
||
if (house["roomNum"].match("2室") != null) {
|
||
roomTypeNum[1] += 1;
|
||
flag = true;
|
||
}
|
||
if (house["roomNum"].match("3室") != null) {
|
||
roomTypeNum[2] += 1;
|
||
flag = true;
|
||
}
|
||
if (flag == false) {
|
||
roomTypeNum[3] += 1;
|
||
}
|
||
if (house["area"] < 50)
|
||
areaSizeNum[0] += 1;
|
||
if (house["area"] >= 50 && house["area"] < 80)
|
||
areaSizeNum[1] += 1;
|
||
if (house["area"] >= 80 && house["area"] < 110)
|
||
areaSizeNum[2] += 1;
|
||
if (house["area"] >= 110 && house["area"] < 150)
|
||
areaSizeNum[3] += 1;
|
||
if (house["area"] >= 150 && house["area"] < 300)
|
||
areaSizeNum[4] += 1;
|
||
if (house["area"] >= 300)
|
||
areaSizeNum[5] += 1;
|
||
if (house["price"] < 200)
|
||
priceNum[0] += 1;
|
||
if (house["price"] >= 200 && house["price"] < 400)
|
||
priceNum[1] += 1;
|
||
if (house["price"] >= 400 && house["price"] < 800)
|
||
priceNum[2] += 1;
|
||
if (house["price"] >= 800 && house["price"] < 1000)
|
||
priceNum[3] += 1;
|
||
if (house["price"] >= 1000)
|
||
priceNum[4] += 1;
|
||
var age = 2019 - house["buildingAge"];
|
||
if (age < 5)
|
||
yearNum[0] += 1;
|
||
if (age >= 5 && age < 10)
|
||
yearNum[1] += 1;
|
||
if (age >= 10 && age < 15)
|
||
yearNum[2] += 1;
|
||
if (age >= 15 && age < 20)
|
||
yearNum[3] += 1;
|
||
if (age >= 20 && age < 30)
|
||
yearNum[4] += 1;
|
||
if (age >= 30)
|
||
yearNum[5] += 1;
|
||
}
|
||
for (var i = 0; i < roomTypeName.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = roomTypeName[i];
|
||
item["value"] = roomTypeNum[i];
|
||
districtItem["value"]["roomType"].push(item);
|
||
}
|
||
for (var i = 0; i < areaSizeName.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = areaSizeName[i];
|
||
item["value"] = areaSizeNum[i];
|
||
districtItem["value"]["areaSize"].push(item);
|
||
}
|
||
for (var i = 0; i < priceNum.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = priceName[i];
|
||
item["value"] = priceNum[i];
|
||
districtItem["value"]["price"].push(item);
|
||
}
|
||
for (var i = 0; i < yearNum.length; i++) {
|
||
var item = {
|
||
};
|
||
item["name"] = yearName[i];
|
||
item["value"] = yearNum[i];
|
||
districtItem["value"]["age"].push(item);
|
||
}
|
||
fig4.push(districtItem);
|
||
}
|
||
if (this.ret_chengjiao == null)
|
||
this.ret_chengjiao = {
|
||
};
|
||
var res = {
|
||
};
|
||
res["fig1"] = fig1;
|
||
res["fig2"] = fig2;
|
||
res["fig3"] = fig3;
|
||
res["fig4"] = fig4;
|
||
if (this.ret_chengjiao[args["district"]] == null)
|
||
this.ret_chengjiao[args["district"]] = res;
|
||
return JSON.stringify(res);
|
||
}
|
||
else
|
||
return null;
|
||
}
|
||
export function connectDBAndQuery(args) {
|
||
print("args:" + args);
|
||
var result = executeContract("AppDataSource","connectDBAndQuery",args);
|
||
var obj = JSON.parse(result);
|
||
print(result);
|
||
return obj.result;
|
||
}
|
||
}
|