import "naiveDAC/naiveDAC.yjs" @LogType("Arg") contract AppDataSource { function onCreate(){ initDAC(requester); } function queryDB(db) { db = JSON.parse(db); var conn = YancloudUtil.getMysqlConnection(db["ip"], db["user"], db["passwd"]); if (conn != undefined && !conn.isClosed()) { print("successfully connected"); } else return null; var sql = "select * from " + db["dbname"] + "." + db["formname"]; var statement = conn.createStatement(); var resultSet = statement.executeQuery(sql); var resultList = []; var meta = resultSet.getMetaData(); for (; resultSet.next();) { var line = { }; for (var j = 1; j <= meta.getColumnCount(); j++) { line[meta.getColumnName(j)] = resultSet.getString(j); } resultList.push(line); } return resultList; } function queryElemeProvider(arg) { if (!checkPermission(requester)){ return "access denied"; } var ret = JSON.parse(executeContract("ElemeProvider", "queryDB", arg)); if (ret.status == "Success") { return JSON.parse(ret.result); } else return null; } export function connectDBAndQuery(args) { if (!checkPermission(requester)){ return "access denied"; } //{"action":"connectDBAndQuery", "arg":"{\"type\":\"takeout\",\"detail\":\"overall\",\"district\":\"海淀\"}"} args = JSON.parse(args); if (args["type"] == "takeout") { print("takeout"); if (this.waimailist_waimai == null) { this.waimailist_waimai = queryDB("{\"ip\":\"39.106.6.6:3306\",\"user\":\"loushuai\",\"passwd\":\"loushuai\",\"dbname\":\"newele\",\"formname\":\"data\"}",requester); if (this.waimailist_waimai == null) { print("failed"); return null; } } var waimailist = (this.waimailist_waimai); if (this.districtDict_waimai == null) { var districtDict = { }; var pattern = /朝阳|西城|丰台|海淀|密云|东城|昌平|怀柔|大兴|通州|房山|石景山|平谷|顺义|延庆|门头沟/g; for (var i = 0; i < waimailist.length; i++) { var addr = waimailist[i]["address"]; addr = addr.replace("北京", ""); addr = addr.replace("市", ""); var district = addr.match(pattern); if (district == null) continue; district = district[0]; if (district.length > 5) continue; if (districtDict[district] == null) districtDict[district] = []; var item = { } if (waimailist[i]["avgPrice"] == null) continue; var avgPrice = waimailist[i]["avgPrice"].replace("¥", "").replace("/人", ""); avgPrice = parseInt(avgPrice); if (waimailist[i]["monthlySalesNum"] == null) continue; item["orderNum"] = parseInt(waimailist[i]["monthlySalesNum"]); item["saleNum"] = item["orderNum"] * avgPrice; if (item["saleNum"] == null || item["orderNum"] == null) continue; if (!(item["saleNum"] > 0 && item["saleNum"] <= 500000)) continue; if (waimailist[i]["overallRating"] == null) continue; item["score"] = waimailist[i]["overallRating"]; item["shopName"] = waimailist[i]["shopName"]; item["categories"] = waimailist[i]["categories"]; item["address"] = waimailist[i]["address"]; districtDict[district].push(item); } this.districtDict_waimai = districtDict; } districtDict = this.districtDict_waimai; if (args["detail"] == "overall") { var fig1 = []; var dictkeys = Object.keys(districtDict); for (var j = 0; j < dictkeys.length; j++) { var key = dictkeys[j]; var item = { } var name = key + "区"; if (key == "延庆" || key == "密云") name = key + "县"; item["name"] = name; item["value"] = []; item["value"].push(districtDict[key].length); var wholeOrder = 0; var wholeSale = 0; for (var i = 0; i < districtDict[key].length; i++) { if (districtDict[key][i]["orderNum"] == null || districtDict[key][i]["saleNum"] == null) continue; wholeOrder += districtDict[key][i]["orderNum"]; wholeSale += districtDict[key][i]["saleNum"]; } item["value"].push(wholeOrder); item["value"].push(wholeSale); fig1.push(item); } var fig2 = []; var cateDict = { }; if (args["district"] == "") { for (var i = 0; i < waimailist.length; i++) { if (waimailist[i]["categories"] == null) continue; var category = waimailist[i]["categories"].split("/")[0]; if (cateDict[category] == null) cateDict[category] = 0; cateDict[category] += 1; } } else { args["district"] = args["district"].replace("区", "").replace("县", ""); for (var i = 0; i < districtDict[args["district"]].length; i++) { if (districtDict[args["district"]][i]["categories"] == null) continue; var category = districtDict[args["district"]][i]["categories"].split("/")[0]; if (cateDict[category] == null) cateDict[category] = 0; cateDict[category] += 1; } } var cateDictKeys = Object.keys(cateDict); for (var j = 0; j < cateDictKeys.length; j++) { var key = cateDictKeys[j]; var item = { }; item["name"] = key; item["value"] = cateDict[key]; fig2.push(item); } var fig3 = { }; var desc2 = function (x, y) { return (x["val"] < y["val"]) ? 1 : -1; } var shopList = []; var dictKeys = Object.keys(districtDict); if (args["district"] == "") { for (var j = 0; j < dictKeys.length; j++) { var key = dictKeys[j]; var districtItem = districtDict[key]; for (var i = 0; i < districtItem.length; i++) { var item = { }; item["name"] = districtItem[i]["shopName"]; item["val"] = districtItem[i]["saleNum"]; shopList.push(item); } } } else { var districtItem = districtDict[args["district"]]; for (var i = 0; i < districtItem.length; i++) { var item = { }; item["name"] = districtItem[i]["shopName"]; item["val"] = districtItem[i]["saleNum"]; shopList.push(item); } } shopList.sort(desc2); var lineData = []; var nameData = []; for (var i = 14; i >= 0; i--) { lineData.push(shopList[i]["val"]); nameData.push(shopList[i]["name"]); } fig3["lineData"] = lineData; fig3["nameData"] = nameData; var ret = { }; ret["fig1"] = fig1; ret["fig2"] = fig2; ret["fig3"] = fig3; ret["district"] = args["district"]; return JSON.stringify(ret); } else if (args["detail"] == "rating") { if (this.districtRateDict == null) { var connRate = YancloudUtil.getMysqlConnection("39.106.6.6:3306", "loushuai", "loushuai"); if (connRate != undefined && !connRate.isClosed()) { print("successfully connected"); } else return "connect failed"; var sqlRate = "select * from newele.catering"; var statementRate = connRate.createStatement(); var resultSet_rate = statementRate.executeQuery(sqlRate); var rateshoplist = []; var meta_rate = resultSet_rate.getMetaData(); for (; resultSet_rate.next();) { var line = { }; for (var j = 1; j <= meta_rate.getColumnCount(); j++) { line[meta_rate.getColumnName(j)] = resultSet_rate.getString(j); } rateshoplist.push(line); } var addrDict = { }; var pattern_addr = /([^区]{1,})区/g; for (var i = 0; i < rateshoplist.length; i++) { var addr = rateshoplist[i]["address"].replace(pattern_addr, ""); addrDict[addr] = rateshoplist[i]["quantization_level"]; } this.districtRateDict = { }; var dictkeys = Object.keys(districtDict); for (var i = 0; i < dictkeys.length; i++) { districtRateDict[dictkeys[i]] = []; var districtItem = districtDict[dictkeys[i]]; for (var j = 0; j < districtItem.length; j++) { var addr = districtItem[j]["address"]; addr = addr.replace(pattern_addr, ""); if (addrDict[addr] != null) { var item = districtItem[j]; item["rate"] = addrDict[addr]; districtRateDict[dictkeys[i]].push(item); } } } } var dictkeys = Object.keys(districtDict); var fig1 = []; for (var i = 0; i < dictkeys.length; i++) { var key = dictkeys[i]; var item = { } var name = key + "区"; if (key == "延庆" || key == "密云") name = key + "县"; item["name"] = name; item["value"] = []; item["value"].push(districtRateDict[key].length); var a = 0; var b = 0; var c = 0; for (var j = 0; j < districtRateDict[key].length; j++) { var shopItem = districtRateDict[key][j]; if (shopItem["rate"].search("A") >= 0) a += 1; if (shopItem["rate"].search("B") >= 0) b += 1; if (shopItem["rate"].search("C") >= 0) c += 1; } item["value"].push(a); item["value"].push(b); item["value"].push(c); fig1.push(item); } var fig2 = []; var rateOrderDict = { "A1": [], "A2": [], "A3": [], "B1": [], "B2": [], "B3": [], "C1": [], "C2": [], "C3": [] }; var rateSaleDict = { "A1": [], "A2": [], "A3": [], "B1": [], "B2": [], "B3": [], "C1": [], "C2": [], "C3": [] }; var districtList = []; if (args["district"] == "") { districtList = Object.keys(districtRateDict); } else { args["district"] = args["district"].replace("区", "").replace("县", ""); districtList.push(args["district"]); } for (var i = 0; i < districtList.length; i++) { for (var j = 0; j < districtRateDict[districtList[i]].length; j++) { var shopItem = districtRateDict[districtList[i]][j]; if (rateOrderDict[shopItem["rate"]] == null) continue; if (rateSaleDict[shopItem["rate"]] == null) continue; rateOrderDict[shopItem["rate"]].push(shopItem["orderNum"]); rateSaleDict[shopItem["rate"]].push(shopItem["saleNum"]); } } var rateList = Object.keys(rateOrderDict); for (var i = 0; i < rateList.length; i++) { var item = { }; item["name"] = rateList[i]; item["value"] = rateOrderDict[rateList[i]]; fig2.push(item); } var fig3 = [] for (var i = 0; i < rateList.length; i++) { var item = { }; item["name"] = rateList[i]; item["value"] = rateSaleDict[rateList[i]]; fig3.push(item); } var fig4 = { }; var pie1_shop = { "A1": 0, "A2": 0, "A3": 0, "B1": 0, "B2": 0, "B3": 0, "C1": 0, "C2": 0, "C3": 0}; var pie1_order = { "A1": 0, "A2": 0, "A3": 0, "B1": 0, "B2": 0, "B3": 0, "C1": 0, "C2": 0, "C3": 0}; var pie1_sale = { "A1": 0, "A2": 0, "A3": 0, "B1": 0, "B2": 0, "B3": 0, "C1": 0, "C2": 0, "C3": 0}; for (var i = 0; i < districtList.length; i++) { for (var j = 0; j < districtRateDict[districtList[i]].length; j++) { var shopItem = districtRateDict[districtList[i]][j]; pie1_shop[shopItem["rate"]] += 1; pie1_order[shopItem["rate"]] += shopItem["orderNum"]; pie1_sale[shopItem["rate"]] += shopItem["saleNum"]; } } fig4["shopNum_9"] = []; fig4["orderNum_9"] = []; fig4["saleNum_9"] = []; for (var i = 0; i < rateList.length; i++) { fig4["shopNum_9"].push({ "name": rateList[i], "value": pie1_shop[rateList[i]]} ); fig4["orderNum_9"].push({ "name": rateList[i], "value": pie1_order[rateList[i]]} ); fig4["saleNum_9"].push({ "name": rateList[i], "value": pie1_sale[rateList[i]]} ); } fig4["shopNum_3"] = []; fig4["orderNum_3"] = []; fig4["saleNum_3"] = []; var nameList = ["A", "B", "C"]; for (var i = 0; i < 3; i++) { var itemShop = { "name": nameList[i]}; var itemOrder = { "name": nameList[i]}; var itemSale = { "name": nameList[i]}; itemShop["value"] = fig4["shopNum_9"][i * 3]["value"] + fig4["shopNum_9"][i * 3 + 1]["value"] + fig4["shopNum_9"][i * 3 + 2]["value"]; itemOrder["value"] = fig4["orderNum_9"][i * 3]["value"] + fig4["orderNum_9"][i * 3 + 1]["value"] + fig4["orderNum_9"][i * 3 + 2]["value"]; itemSale["value"] = fig4["saleNum_9"][i * 3]["value"] + fig4["saleNum_9"][i * 3 + 1]["value"] + fig4["saleNum_9"][i * 3 + 2]["value"]; fig4["shopNum_3"].push(itemShop); fig4["orderNum_3"].push(itemOrder); fig4["saleNum_3"].push(itemSale); } var ret = { }; ret["fig1"] = fig1; ret["fig2"] = fig2; ret["fig3"] = fig3; ret["fig4"] = fig4; ret["district"] = args["district"]; return JSON.stringify(ret); } } } export function connectDBAndQueryTianjin(args) { //{"action":"connectDBAndQueryTianjin", "arg":"{\"type\":\"takeout\",\"detail\":\"overall\",\"district\":\"南开\"}"} args = JSON.parse(args); if (args["type"] == "takeout") { if (this.waimailist_tianjin == null) { this.waimailist_tianjin = queryDB("{\"ip\":\"39.106.6.6:3306\",\"user\":\"loushuai\",\"passwd\":\"loushuai\",\"dbname\":\"tianjin\",\"formname\":\"match_ele\"}"); if (this.waimailist_waimai == null) return null; } var waimailist = this.waimailist_tianjin; if (this.districtDict_waimai_tianjin == null) { var districtDict = { }; var pattern = /和平|河西|河东|河北|红桥|南开|滨海新/g; var pattern_addr = /([^区]{1,})区/g; var score_pattern = /(([^)]{1,}))/g; for (var i = 0; i < waimailist.length; i++) { var addr = waimailist[i]["address"]; addr = addr.replace("天津", ""); addr = addr.replace("市", ""); var district = addr.match(pattern); if (district == null) continue; district = district[0]; if (district.length > 5) continue; if (districtDict[district] == null) districtDict[district] = []; var item = { } if (waimailist[i]["agentFee"] == null) continue; var avgPrice = waimailist[i]["agentFee"]; avgPrice = parseFloat(avgPrice); if (waimailist[i]["monthlySalesNum"] == null) continue; item["orderNum"] = parseInt(waimailist[i]["monthlySalesNum"]); item["saleNum"] = item["orderNum"] * avgPrice; if (item["saleNum"] == null || item["orderNum"] == null) continue; if (!(item["saleNum"] > 0 && item["saleNum"] <= 5000000)) continue; if (waimailist[i]["overallRating"] == null) continue; item["score"] = waimailist[i]["overallRating"]; item["shopName"] = waimailist[i]["shopName"]; item["address"] = waimailist[i]["address"].replace(pattern_addr, ""); ; item["rate"] = waimailist[i]["score"].replace(score_pattern, "") districtDict[district].push(item); } this.districtDict_waimai_tianjin = districtDict; } districtDict = this.districtDict_waimai_tianjin; // 获取天津市互联网餐饮活跃地图数据 var dictkeys = Object.keys(districtDict); // fig1 获取天津市互联网餐饮活跃地图数据 var fig1 = []; // 两个循环用于获取每一个区的优良中差数据 for (var i = 0; i < dictkeys.length; i++) { var key = dictkeys[i]; var item = { }; var name = key + "区"; item["name"] = name; item["value"] = { "all": districtDict[key].length, "优秀": 0, "良好": 0, "一般": 0, "不合格": 0}; item["unqualified_shop_list"] = []; for (var j = 0; j < districtDict[key].length; j++) { var shopItem = districtDict[key][j]; if (shopItem["rate"].search("一般") >= 0) item["value"]["一般"] += 1; if (shopItem["rate"].search("良好") >= 0) item["value"]["良好"] += 1; if (shopItem["rate"].search("不合格") >= 0){ item["value"]["不合格"] += 1; var shop_unqualified = { }; shop_unqualified["shopName"] = shopItem["shopName"]; shop_unqualified["address"] = shopItem["address"]; shop_unqualified["score"] = shopItem["score"]; item["unqualified_shop_list"].push(shop_unqualified); } if (shopItem["rate"].search("优秀") >= 0) item["value"]["优秀"] += 1; } fig1.push(item); } var fig2 = []; var rateOrderDict = { "优秀": [], "良好": [], "一般": [], "不合格": []}; var rateSaleDict = { "优秀": [], "良好": [], "一般": [], "不合格": []}; var districtList = []; if (args["district"] == "") { districtList = Object.keys(districtDict); } else { args["district"] = args["district"].replace("区", "").replace("县", ""); districtList.push(args["district"]); } for (var i = 0; i < districtList.length; i++) { for (var j = 0; j < districtDict[districtList[i]].length; j++) { var shopItem = districtDict[districtList[i]][j]; if (rateOrderDict[shopItem["rate"]] == null) continue; if (rateSaleDict[shopItem["rate"]] == null) continue; rateOrderDict[shopItem["rate"]].push(shopItem["orderNum"]); rateSaleDict[shopItem["rate"]].push(shopItem["saleNum"]); } } var rateList = Object.keys(rateOrderDict); for (var i = 0; i < rateList.length; i++) { var item = { }; item["name"] = rateList[i]; item["value"] = rateOrderDict[rateList[i]]; fig2.push(item); } var fig3 = [] for (var i = 0; i < rateList.length; i++) { var item = { }; item["name"] = rateList[i]; item["value"] = rateSaleDict[rateList[i]]; fig3.push(item); } var fig4 = { }; var pie1_shop = { "优秀": 0, "良好": 0, "一般": 0, "不合格": 0}; var pie1_order = { "优秀": 0, "良好": 0, "一般": 0, "不合格": 0}; var pie1_sale = { "优秀": 0, "良好": 0, "一般": 0, "不合格": 0}; for (var i = 0; i < districtList.length; i++) { for (var j = 0; j < districtDict[districtList[i]].length; j++) { var shopItem = districtDict[districtList[i]][j]; pie1_shop[shopItem["rate"]] += 1; pie1_order[shopItem["rate"]] += shopItem["orderNum"]; pie1_sale[shopItem["rate"]] += shopItem["saleNum"]; } } fig4["shopNum"] = []; fig4["orderNum"] = []; fig4["saleNum"] = []; for (var i = 0; i < rateList.length; i++) { fig4["shopNum"].push({ "name": rateList[i], "value": pie1_shop[rateList[i]]} ); fig4["orderNum"].push({ "name": rateList[i], "value": pie1_order[rateList[i]]} ); fig4["saleNum"].push({ "name": rateList[i], "value": pie1_sale[rateList[i]]} ); } var fig5 = []; var dictkeys = Object.keys(districtDict); for (var j = 0; j < dictkeys.length; j++) { var key = dictkeys[j]; var item = { } var name = key + "区"; item["name"] = name; item["value"] = []; item["value"].push(districtDict[key].length); var wholeOrder = 0; var wholeSale = 0; for (var i = 0; i < districtDict[key].length; i++) { if (districtDict[key][i]["orderNum"] == null || districtDict[key][i]["saleNum"] == null) continue; wholeOrder += districtDict[key][i]["orderNum"]; wholeSale += districtDict[key][i]["saleNum"]; } item["value"].push(wholeOrder); item["value"].push(wholeSale); fig5.push(item); } var ret = { }; ret["fig1"] = fig1; ret["fig2"] = fig2; ret["fig3"] = fig3; ret["fig4"] = fig4; ret["fig5"] = fig5; ret["district"] = args["district"]; return JSON.stringify(ret); } else return null; } export function connectDBAndQueryHouse(args) { args = JSON.parse(args); if (args["type"] == "house") { if (this.ret_ershou != null && this.ret_ershou[args["district"]] != null) return JSON.stringify(this.ret_ershou[args["district"]]); if (this.districtDict_ershou == null || this.houselist_ershou == null) { var houselist = queryDB("{\"ip\":\"39.106.6.6:3306\",\"user\":\"loushuai\",\"passwd\":\"loushuai\",\"dbname\":\"HouseSale\",\"formname\":\"ershoufang\"}"); var districtDict = { }; var pattern = /朝阳|西城|丰台|海淀|密云|东城|昌平|怀柔|大兴|通州|房山|石景山|平谷|顺义|延庆|门头沟/g; 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] = []; var item = { } if (houselist[i]["unitPrice"] == null || houselist[i]["totalPrice"] == null) continue; if (houselist[i]["roomNum"] == null || houselist[i]["area"] == null) continue; var unitPrice = houselist[i]["unitPrice"].replace("元", "").replace("/平", ""); unitPrice = parseInt(unitPrice); var totalPrice = houselist[i]["totalPrice"].replace("万", ""); totalPrice = parseInt(totalPrice); houselist[i]["totalPrice"] = totalPrice; houselist[i]["unitPrice"] = unitPrice; item["unitPrice"] = unitPrice; item["totalPrice"] = totalPrice; item["roomNum"] = houselist[i]["roomNum"]; item["area"] = parseInt(houselist[i]["area"].replace("m²", "")); houselist[i]["area"] = item["area"]; item["district"] = houselist[i]["district"]; item["bussiness"] = houselist[i]["bussiness"]; districtDict[district].push(item); } this.districtDict_ershou = districtDict; this.houselist_ershou = houselist; } var districtDict = this.districtDict_ershou; var houselist = this.houselist_ershou; 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]["unitPrice"] >= 0 && districtDict[key][i]["unitPrice"] <= 10000000) sumPrice += districtDict[key][i]["unitPrice"]; } var avgPrice = sumPrice / districtDict[key].length; item["value"]["avgPrice"] = avgPrice.toFixed(2); fig1.push(item); } if (args["district"] != "" && districtDict[args["district"]] != null) houselist = districtDict[args["district"]]; var fig2 = []; var priceInterval = ["200万以下", "200-300万", "300-500万", "500-700万", "700-1000万", "1000万以上"]; var houseNum = [0, 0, 0, 0, 0, 0]; for (var i = 0; i < houselist.length; i++) { if (houselist[i]["totalPrice"] < 200) { houseNum[0] += 1; } if (houselist[i]["totalPrice"] >= 200 && houselist[i]["totalPrice"] < 300) { houseNum[1] += 1; } if (houselist[i]["totalPrice"] >= 300 && houselist[i]["totalPrice"] < 500) { houseNum[2] += 1; } if (houselist[i]["totalPrice"] >= 500 && houselist[i]["totalPrice"] < 700) { houseNum[3] += 1; } if (houselist[i]["totalPrice"] >= 700 && houselist[i]["totalPrice"] < 1000) { houseNum[4] += 1; } if (houselist[i]["totalPrice"] >= 1000) { houseNum[5] += 1; } } var cnt = 0; for (var i = 0; i < 6; i++) { var item = { }; cnt += houseNum[i]; item["name"] = priceInterval[i]; item["value"] = cnt; fig2.push(item); } var fig3 = []; var areaNumDict = { }; var areaPriceDict = { }; for (var i = 0; i < houselist.length; i++) { var area = houselist[i]["bussiness"]; if (areaNumDict[area] == null) { areaNumDict[area] = 0; areaPriceDict[area] = 0; } if (!(houselist[i]["unitPrice"] >= 0 && houselist[i]["unitPrice"] < 10000000)) continue; areaNumDict[area] += 1; areaPriceDict[area] += houselist[i]["unitPrice"]; } var areaKeys = Object.keys(areaNumDict); var tmpList = []; var desc = function (x, y) { return (x["value"] < y["value"]) ? 1 : -1; } for (var i = 0; i < areaKeys.length; i++) { var item = { "name": areaKeys[i]}; item["value"] = areaNumDict[areaKeys[i]]; 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", "150m2以上"]; var unitPriceName = ["<1w", "1-2w", "2-3w", "3-4w", "4-5w", "5-6w", "6-7w", "7-8w", "8-9w", "9-10w", ">10w"]; var totalPriceName = ["200万以下", "200-300万", "300-500万", "500-700万", "700-1000万", "1000万以上"]; for (var k = 0; k < districtkeys.length; k++) { var district = districtkeys[k]; var districtItem = { "name": district}; districtItem["value"] = { "roomType": [], "areaSize": [], "unitPrice": [], "totalPrice": []}; var roomTypeNum = [0, 0, 0, 0]; var areaSizeNum = [0, 0, 0, 0, 0]; var unitPriceNum = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; var totalPriceNum = [0, 0, 0, 0, 0, 0]; for (var j = 0; j < districtDict[district].length; j++) { var house = districtDict[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) areaSizeNum[4] += 1; var idx = parseInt(house["unitPrice"] / 10000); if (idx > 10) idx = 10; unitPriceNum[idx] += 1; if (house["totalPrice"] < 200) totalPriceNum[0] += 1; if (house["totalPrice"] >= 200 && house["totalPrice"] < 300) totalPriceNum[1] += 1; if (house["totalPrice"] >= 300 && house["totalPrice"] < 500) totalPriceNum[2] += 1; if (house["totalPrice"] >= 500 && house["totalPrice"] < 700) totalPriceNum[3] += 1; if (house["totalPrice"] >= 700 && house["totalPrice"] < 1000) totalPriceNum[4] += 1; if (house["totalPrice"] >= 100) totalPriceNum[5] += 1; } for (var i = 0; i < 4; i++) { var item = { }; item["name"] = roomTypeName[i]; item["value"] = roomTypeNum[i]; districtItem["value"]["roomType"].push(item); } for (var i = 0; i < 5; i++) { var item = { }; item["name"] = areaSizeName[i]; item["value"] = areaSizeNum[i]; districtItem["value"]["areaSize"].push(item); } for (var i = 0; i < 11; i++) { var item = { }; item["name"] = unitPriceName[i]; item["value"] = unitPriceNum[i]; districtItem["value"]["unitPrice"].push(item); } for (var i = 0; i < 6; i++) { var item = { }; item["name"] = totalPriceName[i]; item["value"] = totalPriceNum[i]; districtItem["value"]["totalPrice"].push(item); } fig4.push(districtItem); } var ret = { }; ret["fig1"] = fig1; ret["fig2"] = fig2; ret["fig3"] = fig3; ret["fig4"] = fig4; if (this.ret_ershou == null) this.ret_ershou = { } if (this.ret_ershou[args["district"]] == null) this.ret_ershou[args["district"]] = ret; return JSON.stringify(ret); } else return null; } export function connectDBAndQueryZufang(args) { args = JSON.parse(args); if (args["type"] == "zufang") { if (this.ret_zufang != null && this.ret_zufang[args["district"]] != null) { print("find!"); return JSON.stringify(this.ret_zufang[args["district"]]); } if (this.houselist_zufang == null || this.districtDict_zufang == null || this.bussinessDict_zufang == null) { this.houselist_zufang = queryDB("{\"ip\":\"39.106.6.6:3306\",\"user\":\"loushuai\",\"passwd\":\"loushuai\",\"dbname\":\"HouseSale\",\"formname\":\"zufang\"}") var houselist = this.houselist_zufang; 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("m²", "")); houselist[i]["area"] = item["area"]; item["district"] = houselist[i]["district"]; item["bussiness"] = houselist[i]["bussiness"]; districtDict[district].push(item); bussinessDict2[district][buss].push(item); } districtDict["延庆"] = []; districtDict["怀柔"] = []; districtDict["密云"] = []; bussinessDict2["延庆"] = { }; bussinessDict2["怀柔"] = { }; bussinessDict2["密云"] = { }; this.districtDict_zufang = 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_zufang = bussinessDict; } var houselist = this.houselist_zufang; var districtDict = this.districtDict_zufang; var bussinessDict = this.bussinessDict_zufang; 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 = ["<1500", "1500-2500", "2500-3500", "3500-5000", "5000-8000", "8000-10000", ">10000"]; var houseNum = [0, 0, 0, 0, 0, 0, 0]; for (var i = 0; i < houselist2.length; i++) { if (houselist2[i]["price"] < 1500) { houseNum[0] += 1; } if (houselist2[i]["price"] >= 1500 && houselist2[i]["price"] < 2500) { houseNum[1] += 1; } if (houselist2[i]["price"] >= 2500 && houselist2[i]["price"] < 3500) { houseNum[2] += 1; } if (houselist2[i]["price"] >= 3500 && houselist2[i]["price"] < 5000) { houseNum[3] += 1; } if (houselist2[i]["price"] >= 5000 && houselist2[i]["price"] < 8000) { houseNum[4] += 1; } if (houselist2[i]["price"] >= 8000 && houselist2[i]["price"] < 10000) { houseNum[5] += 1; } if (houselist2[i]["price"] >= 10000) { houseNum[6] += 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 = ["20m2以下", "20-50m2", "50-80m2", "80-110m2", "110-150m2", "150m2以上"]; var priceName = ["<1500", "1500-2500", "2500-3500", "3500-5000", "5000-8000", "8000-10000", ">10000"]; for (var k = 0; k < districtkeys.length; k++) { var district = districtkeys[k]; var districtItem = { "name": district}; districtItem["value"] = { "roomType": [], "areaSize": [], "price": []}; var roomTypeNum = [0, 0, 0, 0]; var areaSizeNum = [0, 0, 0, 0, 0, 0]; var priceNum = [0, 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"] < 20) areaSizeNum[0] += 1; if (house["area"] >= 20 && house["area"] < 50) areaSizeNum[1] += 1; if (house["area"] >= 50 && house["area"] < 80) areaSizeNum[2] += 1; if (house["area"] >= 80 && house["area"] < 110) areaSizeNum[3] += 1; if (house["area"] >= 110 && house["area"] < 150) areaSizeNum[4] += 1; if (house["area"] >= 150) areaSizeNum[5] += 1; if (house["price"] < 1500) priceNum[0] += 1; if (house["price"] >= 1500 && house["price"] < 2500) priceNum[1] += 1; if (house["price"] >= 2500 && house["price"] < 3500) priceNum[2] += 1; if (house["price"] >= 3500 && house["price"] < 5000) priceNum[3] += 1; if (house["price"] >= 5000 && house["price"] < 8000) priceNum[4] += 1; if (house["price"] >= 8000 && house["price"] < 10000) priceNum[5] += 1; if (house["price"] >= 10000) priceNum[6] += 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); } fig4.push(districtItem); } if (this.ret_zufang == null) this.ret_zufang = { }; var res = { }; res["fig1"] = fig1; res["fig2"] = fig2; res["fig3"] = fig3; res["fig4"] = fig4; if (this.ret_zufang[args["district"]] == null) this.ret_zufang[args["district"]] = res; return JSON.stringify(res); } else return null; } 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 = queryDB("{\"ip\":\"39.106.6.6:3306\",\"user\":\"loushuai\",\"passwd\":\"loushuai\",\"dbname\":\"HouseSale\",\"formname\":\"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 connectDBAndQueryNeimeng(args) { //{"action":"connectDBAndQueryNeimeng", "arg":"{\"type\":\"takeout\",\"detail\":\"overall\"}"} args = JSON.parse(args); if (args["type"] == "takeout") { if (this.waimailist_xlgl == null) { var init_data = queryDB("{\"ip\":\"39.106.6.6:3306\",\"user\":\"loushuai\",\"passwd\":\"loushuai\",\"dbname\":\"xlglm\",\"formname\":\"meituanwaimai\"}"); var waimailist = []; for (var i = 0; i < init_data.length; i++) { if (init_data[i]["avgPrice"] == null || init_data[i]["monthlySalesNum"] == null) continue; var price = parseInt(init_data[i]["avgPrice"].replace("人均 ¥", "")); var saleNum = parseInt(init_data[i]["monthlySalesNum"].replace("月售", "")); var sale = price * saleNum; var item = init_data[i]; if (sale >= 0 && sale < 500000000000) { item["sale"] = sale; waimailist.push(item); } } this.waimailist_xlgl = waimailist; if (this.waimailist_xlgl == null) return null; } if (this.areadict_xlgl == null) { var arealist = queryDB("{\"ip\":\"39.106.6.6:3306\",\"user\":\"loushuai\",\"passwd\":\"loushuai\",\"dbname\":\"xlglm\",\"formname\":\"meituan\"}"); var areaDict = { }; for (var i = 0; i < arealist.length; i++) { var area = arealist[i]["areaName"]; if (area == null) continue; if (areaDict[area] == null) { areaDict[area] = []; } areaDict[area].push(arealist[i]); } this.areadict_xlgl = areaDict; } var waimailist = this.waimailist_xlgl; var fig1 = []; var cateDict = { }; for (var i = 0; i < waimailist.length; i++) { if (waimailist[i]["categories"] == null) continue; var category = waimailist[i]["categories"].split("/")[0]; if (cateDict[category] == null) cateDict[category] = 0; cateDict[category] += 1; } var cateDictKeys = Object.keys(cateDict); for (var j = 0; j < cateDictKeys.length; j++) { var key = cateDictKeys[j]; var item = { }; item["name"] = key; item["value"] = cateDict[key]; fig1.push(item); } var fig2 = { }; var desc2 = function (x, y) { return (x["val"] < y["val"]) ? 1 : -1; } var shopList = []; for (var j = 0; j < waimailist.length; j++) { var item = { }; item["name"] = waimailist[j]["shopName"]; item["val"] = waimailist[j]["sale"]; shopList.push(item); } shopList.sort(desc2); var lineData = []; var nameData = []; for (var i = 14; i >= 0; i--) { lineData.push(shopList[i]["val"]); nameData.push(shopList[i]["name"]); } fig2["lineData"] = lineData; fig2["nameData"] = nameData; var fig3 = []; var areaDict = this.areadict_xlgl; var areaKeys = Object.keys(areaDict); for (var i = 0; i < areaKeys.length; i++) { var item = { }; item["area"] = areaKeys[i]; item["shopNum"] = areaDict[areaKeys[i]].length; var sum = 0; for (var j = 0; j < item["shopNum"]; j++) { var price = parseInt(areaDict[areaKeys[i]][j]["avgPrice"]); if (price >= 0 && price < 50000000) { sum += price; } } if (sum == 0) continue; item["saleNum"] = sum * 79; fig3.push(item); } var fig4 = { }; var desc2 = function (x, y) { return (x["val"] < y["val"]) ? 1 : -1; } var shopList = []; for (var j = 0; j < waimailist.length; j++) { var item = { }; item["name"] = waimailist[j]["shopName"]; item["val"] = parseFloat(waimailist[j]["overallRating"]); shopList.push(item); } shopList.sort(desc2); var lineData = []; var nameData = []; for (var i = 14; i >= 0; i--) { lineData.push(shopList[i]["val"]); nameData.push(shopList[i]["name"]); } fig4["lineData"] = lineData; fig4["nameData"] = nameData; var ret = { }; ret["fig1"] = fig1; ret["fig2"] = fig2; ret["fig3"] = fig3; ret["fig4"] = fig4; return JSON.stringify(ret); } else return null; } }