async def tongbi_huanbi(ns={}): """ 计算同比, 环比 :param ns: :return: """ date_m = ns.get('date_m') number = ns.get('number') flag = ns.get('flag') # 构建一个dataframe data = pandas.DataFrame({'date_m': date_m, 'number': number}) data['huanbi'] = data.number.pct_change() # 填充 data.fillna(0, inplace=True) data['tongbi'] = data.number.diff(12) # 按月同比,12正好是12个月。 data['tongbi_01'] = data['tongbi'] / (data['number'] - data['tongbi']) data.fillna(0, inplace=True) data_filter = data[12:] data_filter = { 'number': list(data_filter['number']), 'date': [str(item) for item in data_filter['date_m'].values.astype("datetime64[D]")], 'tongbi': list(data_filter['tongbi_01']), 'huanbi': list(data_filter['huanbi']), } if flag == '运营': data_filter['salesman'] = [[{'name': '销售01', 'value': 12, 'tongbi': 0.008542447878264747, 'huanbi': 0.30832973690678545}, {'name': '销售11', 'value': 19, 'tongbi': 0.08086662555173474, 'huanbi': 0.5959894426523988}, {'name': '销售21', 'value': 19, 'tongbi': 0.19439375900051747, 'huanbi': 0.482725912281483}, {'name': '销售31', 'value': 18, 'tongbi': 0.5318074353806365, 'huanbi': 0.27252342933158846}, {'name': '销售41', 'value': 17, 'tongbi': 0.534842701332644, 'huanbi': 0.6679911673141555}, {'name': '销售51', 'value': 11, 'tongbi': 0.25245452921798495, 'huanbi': 0.6123205471559013}, {'name': '销售61', 'value': 11, 'tongbi': 0.6910268852114195, 'huanbi': 0.4828956548255757}, {'name': '销售71', 'value': 13, 'tongbi': 0.21152850705713855, 'huanbi': 0.655436058588999}, {'name': '销售81', 'value': 14, 'tongbi': 0.9352711728515702, 'huanbi': 0.4405332264223424}], [{'name': '销售02', 'value': 13, 'tongbi': 0.11859609083464795, 'huanbi': 0.47999810545436383}, {'name': '销售12', 'value': 13, 'tongbi': 0.7356640876482176, 'huanbi': 0.177157581460341}, {'name': '销售22', 'value': 11, 'tongbi': 0.40489538440013517, 'huanbi': 0.9343505898946487}, {'name': '销售32', 'value': 10, 'tongbi': 0.6341156436296702, 'huanbi': 0.3621413041617467}, {'name': '销售42', 'value': 11, 'tongbi': 0.22068091086445052, 'huanbi': 0.08588539513443494}], [{'name': '销售03', 'value': 19, 'tongbi': 0.494022255789623, 'huanbi': 0.13073565535108578}, {'name': '销售13', 'value': 13, 'tongbi': 0.3910241169957196, 'huanbi': 0.276544682828029}, {'name': '销售23', 'value': 19, 'tongbi': 0.7600876916181717, 'huanbi': 0.11822245540158338}, {'name': '销售33', 'value': 19, 'tongbi': 0.5119167670936225, 'huanbi': 0.02872316123765417}, {'name': '销售43', 'value': 20, 'tongbi': 0.33423929274238606, 'huanbi': 0.2198186681438986}], [{'name': '销售04', 'value': 18, 'tongbi': 0.46960233865686807, 'huanbi': 0.43677310019967464}, {'name': '销售14', 'value': 13, 'tongbi': 0.32922750538962076, 'huanbi': 0.7978948605081218}, {'name': '销售24', 'value': 16, 'tongbi': 0.06708887841031619, 'huanbi': 0.5324458306207873}, {'name': '销售34', 'value': 12, 'tongbi': 0.791452357167124, 'huanbi': 0.33990261813663725}, {'name': '销售44', 'value': 18, 'tongbi': 0.30209245859411316, 'huanbi': 0.5431294221716274}, {'name': '销售54', 'value': 13, 'tongbi': 0.7353201272987916, 'huanbi': 0.37711879871798604}, {'name': '销售64', 'value': 16, 'tongbi': 0.340410734920903, 'huanbi': 0.06569753597752925}, {'name': '销售74', 'value': 13, 'tongbi': 0.3873866009080311, 'huanbi': 0.41389672151690193}], [{'name': '销售05', 'value': 20, 'tongbi': 0.4693069363589638, 'huanbi': 0.11974541237859193}, {'name': '销售15', 'value': 11, 'tongbi': 0.36749840028074776, 'huanbi': 0.025621863569265657}, {'name': '销售25', 'value': 16, 'tongbi': 0.866283217483121, 'huanbi': 0.8129269282400009}, {'name': '销售35', 'value': 18, 'tongbi': 0.03911988081224571, 'huanbi': 0.9080513202130526}, {'name': '销售45', 'value': 20, 'tongbi': 0.5801974394626238, 'huanbi': 0.09735986608044034}, {'name': '销售55', 'value': 17, 'tongbi': 0.7727751783362496, 'huanbi': 0.6041601141874029}, {'name': '销售65', 'value': 11, 'tongbi': 0.3537463866413375, 'huanbi': 0.498744410473723}, {'name': '销售75', 'value': 19, 'tongbi': 0.24711388878581042, 'huanbi': 0.7354940641382034}], [{'name': '销售06', 'value': 16, 'tongbi': 0.09955471016668738, 'huanbi': 0.4837234341708746}, {'name': '销售16', 'value': 20, 'tongbi': 0.6080848656040618, 'huanbi': 0.19609055808106912}, {'name': '销售26', 'value': 20, 'tongbi': 0.19893543378359557, 'huanbi': 0.9820905676417653}, {'name': '销售36', 'value': 20, 'tongbi': 0.9358805401133772, 'huanbi': 0.32250059080996885}, {'name': '销售46', 'value': 10, 'tongbi': 0.46545104476264554, 'huanbi': 0.6339458928207323}, {'name': '销售56', 'value': 10, 'tongbi': 0.5849474679790357, 'huanbi': 0.09437804592798471}, {'name': '销售66', 'value': 18, 'tongbi': 0.3582148229487313, 'huanbi': 0.8846082161224662}, {'name': '销售76', 'value': 20, 'tongbi': 0.6613200418612427, 'huanbi': 0.9884357112100604}], [{'name': '销售07', 'value': 14, 'tongbi': 0.5833227468880136, 'huanbi': 0.5096703722402176}, {'name': '销售17', 'value': 10, 'tongbi': 0.4521858141160099, 'huanbi': 0.8390538860679484}, {'name': '销售27', 'value': 15, 'tongbi': 0.5330563638482998, 'huanbi': 0.615756465974197}, {'name': '销售37', 'value': 16, 'tongbi': 0.6153386363550002, 'huanbi': 0.43733617759817167}, {'name': '销售47', 'value': 19, 'tongbi': 0.5197227283922143, 'huanbi': 0.6622969369309744}], [{'name': '销售08', 'value': 19, 'tongbi': 0.09462159369910195, 'huanbi': 0.3946461262979716}, {'name': '销售18', 'value': 11, 'tongbi': 0.9901718870106793, 'huanbi': 0.3384274832883696}, {'name': '销售28', 'value': 19, 'tongbi': 0.10312908320869629, 'huanbi': 0.9637160044177262}, {'name': '销售38', 'value': 15, 'tongbi': 0.002349641216951248, 'huanbi': 0.39924292690558805}, {'name': '销售48', 'value': 16, 'tongbi': 0.00270269391624256, 'huanbi': 0.46758915644287125}, {'name': '销售58', 'value': 19, 'tongbi': 0.4699970681021023, 'huanbi': 0.39784969691277816}, {'name': '销售68', 'value': 14, 'tongbi': 0.424552158609265, 'huanbi': 0.3227922881234906}, {'name': '销售78', 'value': 18, 'tongbi': 0.5386634279878086, 'huanbi': 0.9261071177050025}, {'name': '销售88', 'value': 15, 'tongbi': 0.3717941808402113, 'huanbi': 0.9216737510966556}], [{'name': '销售09', 'value': 13, 'tongbi': 0.9653966214570712, 'huanbi': 0.7018563546530211}, {'name': '销售19', 'value': 10, 'tongbi': 0.6975377212776601, 'huanbi': 0.8555275854797553}, {'name': '销售29', 'value': 15, 'tongbi': 0.06750488156268208, 'huanbi': 0.9457359011033879}, {'name': '销售39', 'value': 19, 'tongbi': 0.24020988426822143, 'huanbi': 0.9652432054533739}, {'name': '销售49', 'value': 17, 'tongbi': 0.16283635998324097, 'huanbi': 0.29819358499147797}, {'name': '销售59', 'value': 14, 'tongbi': 0.3279603096801632, 'huanbi': 0.7418623983684243}], [{'name': '销售010', 'value': 20, 'tongbi': 0.907495297770339, 'huanbi': 0.15629992085468492}, {'name': '销售110', 'value': 13, 'tongbi': 0.759482454666481, 'huanbi': 0.3119696421867645}, {'name': '销售210', 'value': 12, 'tongbi': 0.2942793247423131, 'huanbi': 0.8470493533524307}, {'name': '销售310', 'value': 16, 'tongbi': 0.04444356772732172, 'huanbi': 0.4448751982284749}, {'name': '销售410', 'value': 11, 'tongbi': 0.46893040348029635, 'huanbi': 0.7944161749257892}, {'name': '销售510', 'value': 15, 'tongbi': 0.664506035638649, 'huanbi': 0.25873359932131956}, {'name': '销售610', 'value': 12, 'tongbi': 0.9873447233553789, 'huanbi': 0.4774279375004229}], [{'name': '销售011', 'value': 13, 'tongbi': 0.8082928483809843, 'huanbi': 0.16147237385146496}, {'name': '销售111', 'value': 11, 'tongbi': 0.6932072723336528, 'huanbi': 0.06762548792329837}, {'name': '销售211', 'value': 14, 'tongbi': 0.8050094916679924, 'huanbi': 0.8091831826022391}, {'name': '销售311', 'value': 16, 'tongbi': 0.4522345288895985, 'huanbi': 0.2215303407432222}, {'name': '销售411', 'value': 13, 'tongbi': 0.038451638114093245, 'huanbi': 0.3824705450199558}, {'name': '销售511', 'value': 10, 'tongbi': 0.4767193703850229, 'huanbi': 0.47344731832082654}], [{'name': '销售012', 'value': 11, 'tongbi': 0.7430528379260924, 'huanbi': 0.663564473697196}, {'name': '销售112', 'value': 11, 'tongbi': 0.9861219730747741, 'huanbi': 0.5515174353631295}, {'name': '销售212', 'value': 13, 'tongbi': 0.32851582142213587, 'huanbi': 0.7925799644399993}, {'name': '销售312', 'value': 15, 'tongbi': 0.340205022195328, 'huanbi': 0.7939790603518526}, {'name': '销售412', 'value': 14, 'tongbi': 0.901944352290332, 'huanbi': 0.08970374059876818}, {'name': '销售512', 'value': 10, 'tongbi': 0.8163240822240917, 'huanbi': 0.09010348632549792}]] data_filter['department'] = [[{'name': '部门1', 'value': 12, 'tongbi': 0.39607579005769633, 'huanbi': 0.34669005784670315}], [{'name': '部门1', 'value': 10, 'tongbi': 0.3587298421126637, 'huanbi': 0.9802880132709184}, {'name': '部门2', 'value': 14, 'tongbi': 0.8413939961571563, 'huanbi': 0.11606782606830035}, {'name': '部门3', 'value': 15, 'tongbi': 0.7875193262478906, 'huanbi': 0.21893840192616498}, {'name': '部门4', 'value': 19, 'tongbi': 0.49102739179988353, 'huanbi': 0.23797946099098888}], [{'name': '部门1', 'value': 15, 'tongbi': 0.04042849749281907, 'huanbi': 0.047087950819595936}, {'name': '部门2', 'value': 15, 'tongbi': 0.3262849779514091, 'huanbi': 0.11128433552744177}, {'name': '部门3', 'value': 12, 'tongbi': 0.2979208718638473, 'huanbi': 0.2354633110171528}, {'name': '部门4', 'value': 15, 'tongbi': 0.15026755602347175, 'huanbi': 0.4140659875416107}, {'name': '部门5', 'value': 14, 'tongbi': 0.16504226067863814, 'huanbi': 0.8012603068371335}], [{'name': '部门1', 'value': 15, 'tongbi': 0.193791138292155, 'huanbi': 0.4697144297659246}, {'name': '部门2', 'value': 15, 'tongbi': 0.953317790798785, 'huanbi': 0.873548972509708}, {'name': '部门3', 'value': 13, 'tongbi': 0.1486335302135402, 'huanbi': 0.3863579664302743}, {'name': '部门4', 'value': 18, 'tongbi': 0.6763222086920346, 'huanbi': 0.2929799220589496}, {'name': '部门5', 'value': 14, 'tongbi': 0.0683789116818263, 'huanbi': 0.3681658434415588}], [{'name': '部门1', 'value': 12, 'tongbi': 0.947279682094137, 'huanbi': 0.6451258304956019}, {'name': '部门2', 'value': 20, 'tongbi': 0.5204641527129314, 'huanbi': 0.3884853167572909}], [{'name': '部门1', 'value': 15, 'tongbi': 0.4410644756037717, 'huanbi': 0.7783806011003372}], [{'name': '部门1', 'value': 19, 'tongbi': 0.5578994449622721, 'huanbi': 0.44509592484847493}, {'name': '部门2', 'value': 10, 'tongbi': 0.5322941417618255, 'huanbi': 0.6773027245355887}, {'name': '部门3', 'value': 11, 'tongbi': 0.4645001772516376, 'huanbi': 0.008150088853075999}, {'name': '部门4', 'value': 19, 'tongbi': 0.12729681188791075, 'huanbi': 0.788841123621361}], [{'name': '部门1', 'value': 11, 'tongbi': 0.4199650543322204, 'huanbi': 0.600682836340113}], [{'name': '部门1', 'value': 20, 'tongbi': 0.07307651975749185, 'huanbi': 0.8954941985252319}], [{'name': '部门1', 'value': 11, 'tongbi': 0.8475579116921738, 'huanbi': 0.7574803832597906}], [{'name': '部门1', 'value': 16, 'tongbi': 0.8100627113404443, 'huanbi': 0.7326512355025334}, {'name': '部门2', 'value': 12, 'tongbi': 0.43659153037857856, 'huanbi': 0.9438856753095781}, {'name': '部门3', 'value': 15, 'tongbi': 0.9057434082850526, 'huanbi': 0.9782199159162027}, {'name': '部门4', 'value': 11, 'tongbi': 0.7063423527479401, 'huanbi': 0.2233661781572941}], [{'name': '部门1', 'value': 11, 'tongbi': 0.9788067429038488, 'huanbi': 0.8571351497260006}]] elif flag == '运营利润': data_filter['salesman'] = [[{'name': '销售01', 'value': 12, 'tongbi': 0.008542447878264747, 'huanbi': 0.30832973690678545}, {'name': '销售11', 'value': 19, 'tongbi': 0.08086662555173474, 'huanbi': 0.5959894426523988}, {'name': '销售21', 'value': 19, 'tongbi': 0.19439375900051747, 'huanbi': 0.482725912281483}, {'name': '销售31', 'value': 18, 'tongbi': 0.5318074353806365, 'huanbi': 0.27252342933158846}, {'name': '销售41', 'value': 17, 'tongbi': 0.534842701332644, 'huanbi': 0.6679911673141555}, {'name': '销售51', 'value': 11, 'tongbi': 0.25245452921798495, 'huanbi': 0.6123205471559013}, {'name': '销售61', 'value': 11, 'tongbi': 0.6910268852114195, 'huanbi': 0.4828956548255757}, {'name': '销售71', 'value': 13, 'tongbi': 0.21152850705713855, 'huanbi': 0.655436058588999}, {'name': '销售81', 'value': 14, 'tongbi': 0.9352711728515702, 'huanbi': 0.4405332264223424}], [{'name': '销售02', 'value': 13, 'tongbi': 0.11859609083464795, 'huanbi': 0.47999810545436383}, {'name': '销售12', 'value': 13, 'tongbi': 0.7356640876482176, 'huanbi': 0.177157581460341}, {'name': '销售22', 'value': 11, 'tongbi': 0.40489538440013517, 'huanbi': 0.9343505898946487}, {'name': '销售32', 'value': 10, 'tongbi': 0.6341156436296702, 'huanbi': 0.3621413041617467}, {'name': '销售42', 'value': 11, 'tongbi': 0.22068091086445052, 'huanbi': 0.08588539513443494}], [{'name': '销售03', 'value': 19, 'tongbi': 0.494022255789623, 'huanbi': 0.13073565535108578}, {'name': '销售13', 'value': 13, 'tongbi': 0.3910241169957196, 'huanbi': 0.276544682828029}, {'name': '销售23', 'value': 19, 'tongbi': 0.7600876916181717, 'huanbi': 0.11822245540158338}, {'name': '销售33', 'value': 19, 'tongbi': 0.5119167670936225, 'huanbi': 0.02872316123765417}, {'name': '销售43', 'value': 20, 'tongbi': 0.33423929274238606, 'huanbi': 0.2198186681438986}], [{'name': '销售04', 'value': 18, 'tongbi': 0.46960233865686807, 'huanbi': 0.43677310019967464}, {'name': '销售14', 'value': 13, 'tongbi': 0.32922750538962076, 'huanbi': 0.7978948605081218}, {'name': '销售24', 'value': 16, 'tongbi': 0.06708887841031619, 'huanbi': 0.5324458306207873}, {'name': '销售34', 'value': 12, 'tongbi': 0.791452357167124, 'huanbi': 0.33990261813663725}, {'name': '销售44', 'value': 18, 'tongbi': 0.30209245859411316, 'huanbi': 0.5431294221716274}, {'name': '销售54', 'value': 13, 'tongbi': 0.7353201272987916, 'huanbi': 0.37711879871798604}, {'name': '销售64', 'value': 16, 'tongbi': 0.340410734920903, 'huanbi': 0.06569753597752925}, {'name': '销售74', 'value': 13, 'tongbi': 0.3873866009080311, 'huanbi': 0.41389672151690193}], [{'name': '销售05', 'value': 20, 'tongbi': 0.4693069363589638, 'huanbi': 0.11974541237859193}, {'name': '销售15', 'value': 11, 'tongbi': 0.36749840028074776, 'huanbi': 0.025621863569265657}, {'name': '销售25', 'value': 16, 'tongbi': 0.866283217483121, 'huanbi': 0.8129269282400009}, {'name': '销售35', 'value': 18, 'tongbi': 0.03911988081224571, 'huanbi': 0.9080513202130526}, {'name': '销售45', 'value': 20, 'tongbi': 0.5801974394626238, 'huanbi': 0.09735986608044034}, {'name': '销售55', 'value': 17, 'tongbi': 0.7727751783362496, 'huanbi': 0.6041601141874029}, {'name': '销售65', 'value': 11, 'tongbi': 0.3537463866413375, 'huanbi': 0.498744410473723}, {'name': '销售75', 'value': 19, 'tongbi': 0.24711388878581042, 'huanbi': 0.7354940641382034}], [{'name': '销售06', 'value': 16, 'tongbi': 0.09955471016668738, 'huanbi': 0.4837234341708746}, {'name': '销售16', 'value': 20, 'tongbi': 0.6080848656040618, 'huanbi': 0.19609055808106912}, {'name': '销售26', 'value': 20, 'tongbi': 0.19893543378359557, 'huanbi': 0.9820905676417653}, {'name': '销售36', 'value': 20, 'tongbi': 0.9358805401133772, 'huanbi': 0.32250059080996885}, {'name': '销售46', 'value': 10, 'tongbi': 0.46545104476264554, 'huanbi': 0.6339458928207323}, {'name': '销售56', 'value': 10, 'tongbi': 0.5849474679790357, 'huanbi': 0.09437804592798471}, {'name': '销售66', 'value': 18, 'tongbi': 0.3582148229487313, 'huanbi': 0.8846082161224662}, {'name': '销售76', 'value': 20, 'tongbi': 0.6613200418612427, 'huanbi': 0.9884357112100604}], [{'name': '销售07', 'value': 14, 'tongbi': 0.5833227468880136, 'huanbi': 0.5096703722402176}, {'name': '销售17', 'value': 10, 'tongbi': 0.4521858141160099, 'huanbi': 0.8390538860679484}, {'name': '销售27', 'value': 15, 'tongbi': 0.5330563638482998, 'huanbi': 0.615756465974197}, {'name': '销售37', 'value': 16, 'tongbi': 0.6153386363550002, 'huanbi': 0.43733617759817167}, {'name': '销售47', 'value': 19, 'tongbi': 0.5197227283922143, 'huanbi': 0.6622969369309744}], [{'name': '销售08', 'value': 19, 'tongbi': 0.09462159369910195, 'huanbi': 0.3946461262979716}, {'name': '销售18', 'value': 11, 'tongbi': 0.9901718870106793, 'huanbi': 0.3384274832883696}, {'name': '销售28', 'value': 19, 'tongbi': 0.10312908320869629, 'huanbi': 0.9637160044177262}, {'name': '销售38', 'value': 15, 'tongbi': 0.002349641216951248, 'huanbi': 0.39924292690558805}, {'name': '销售48', 'value': 16, 'tongbi': 0.00270269391624256, 'huanbi': 0.46758915644287125}, {'name': '销售58', 'value': 19, 'tongbi': 0.4699970681021023, 'huanbi': 0.39784969691277816}, {'name': '销售68', 'value': 14, 'tongbi': 0.424552158609265, 'huanbi': 0.3227922881234906}, {'name': '销售78', 'value': 18, 'tongbi': 0.5386634279878086, 'huanbi': 0.9261071177050025}, {'name': '销售88', 'value': 15, 'tongbi': 0.3717941808402113, 'huanbi': 0.9216737510966556}], [{'name': '销售09', 'value': 13, 'tongbi': 0.9653966214570712, 'huanbi': 0.7018563546530211}, {'name': '销售19', 'value': 10, 'tongbi': 0.6975377212776601, 'huanbi': 0.8555275854797553}, {'name': '销售29', 'value': 15, 'tongbi': 0.06750488156268208, 'huanbi': 0.9457359011033879}, {'name': '销售39', 'value': 19, 'tongbi': 0.24020988426822143, 'huanbi': 0.9652432054533739}, {'name': '销售49', 'value': 17, 'tongbi': 0.16283635998324097, 'huanbi': 0.29819358499147797}, {'name': '销售59', 'value': 14, 'tongbi': 0.3279603096801632, 'huanbi': 0.7418623983684243}], [{'name': '销售010', 'value': 20, 'tongbi': 0.907495297770339, 'huanbi': 0.15629992085468492}, {'name': '销售110', 'value': 13, 'tongbi': 0.759482454666481, 'huanbi': 0.3119696421867645}, {'name': '销售210', 'value': 12, 'tongbi': 0.2942793247423131, 'huanbi': 0.8470493533524307}, {'name': '销售310', 'value': 16, 'tongbi': 0.04444356772732172, 'huanbi': 0.4448751982284749}, {'name': '销售410', 'value': 11, 'tongbi': 0.46893040348029635, 'huanbi': 0.7944161749257892}, {'name': '销售510', 'value': 15, 'tongbi': 0.664506035638649, 'huanbi': 0.25873359932131956}, {'name': '销售610', 'value': 12, 'tongbi': 0.9873447233553789, 'huanbi': 0.4774279375004229}], [{'name': '销售011', 'value': 13, 'tongbi': 0.8082928483809843, 'huanbi': 0.16147237385146496}, {'name': '销售111', 'value': 11, 'tongbi': 0.6932072723336528, 'huanbi': 0.06762548792329837}, {'name': '销售211', 'value': 14, 'tongbi': 0.8050094916679924, 'huanbi': 0.8091831826022391}, {'name': '销售311', 'value': 16, 'tongbi': 0.4522345288895985, 'huanbi': 0.2215303407432222}, {'name': '销售411', 'value': 13, 'tongbi': 0.038451638114093245, 'huanbi': 0.3824705450199558}, {'name': '销售511', 'value': 10, 'tongbi': 0.4767193703850229, 'huanbi': 0.47344731832082654}], [{'name': '销售012', 'value': 11, 'tongbi': 0.7430528379260924, 'huanbi': 0.663564473697196}, {'name': '销售112', 'value': 11, 'tongbi': 0.9861219730747741, 'huanbi': 0.5515174353631295}, {'name': '销售212', 'value': 13, 'tongbi': 0.32851582142213587, 'huanbi': 0.7925799644399993}, {'name': '销售312', 'value': 15, 'tongbi': 0.340205022195328, 'huanbi': 0.7939790603518526}, {'name': '销售412', 'value': 14, 'tongbi': 0.901944352290332, 'huanbi': 0.08970374059876818}, {'name': '销售512', 'value': 10, 'tongbi': 0.8163240822240917, 'huanbi': 0.09010348632549792}]] data_filter['department'] = [[{'name': '部门1', 'value': 12, 'tongbi': 0.39607579005769633, 'huanbi': 0.34669005784670315}], [{'name': '部门1', 'value': 10, 'tongbi': 0.3587298421126637, 'huanbi': 0.9802880132709184}, {'name': '部门2', 'value': 14, 'tongbi': 0.8413939961571563, 'huanbi': 0.11606782606830035}, {'name': '部门3', 'value': 15, 'tongbi': 0.7875193262478906, 'huanbi': 0.21893840192616498}, {'name': '部门4', 'value': 19, 'tongbi': 0.49102739179988353, 'huanbi': 0.23797946099098888}], [{'name': '部门1', 'value': 15, 'tongbi': 0.04042849749281907, 'huanbi': 0.047087950819595936}, {'name': '部门2', 'value': 15, 'tongbi': 0.3262849779514091, 'huanbi': 0.11128433552744177}, {'name': '部门3', 'value': 12, 'tongbi': 0.2979208718638473, 'huanbi': 0.2354633110171528}, {'name': '部门4', 'value': 15, 'tongbi': 0.15026755602347175, 'huanbi': 0.4140659875416107}, {'name': '部门5', 'value': 14, 'tongbi': 0.16504226067863814, 'huanbi': 0.8012603068371335}], [{'name': '部门1', 'value': 15, 'tongbi': 0.193791138292155, 'huanbi': 0.4697144297659246}, {'name': '部门2', 'value': 15, 'tongbi': 0.953317790798785, 'huanbi': 0.873548972509708}, {'name': '部门3', 'value': 13, 'tongbi': 0.1486335302135402, 'huanbi': 0.3863579664302743}, {'name': '部门4', 'value': 18, 'tongbi': 0.6763222086920346, 'huanbi': 0.2929799220589496}, {'name': '部门5', 'value': 14, 'tongbi': 0.0683789116818263, 'huanbi': 0.3681658434415588}], [{'name': '部门1', 'value': 12, 'tongbi': 0.947279682094137, 'huanbi': 0.6451258304956019}, {'name': '部门2', 'value': 20, 'tongbi': 0.5204641527129314, 'huanbi': 0.3884853167572909}], [{'name': '部门1', 'value': 15, 'tongbi': 0.4410644756037717, 'huanbi': 0.7783806011003372}], [{'name': '部门1', 'value': 19, 'tongbi': 0.5578994449622721, 'huanbi': 0.44509592484847493}, {'name': '部门2', 'value': 10, 'tongbi': 0.5322941417618255, 'huanbi': 0.6773027245355887}, {'name': '部门3', 'value': 11, 'tongbi': 0.4645001772516376, 'huanbi': 0.008150088853075999}, {'name': '部门4', 'value': 19, 'tongbi': 0.12729681188791075, 'huanbi': 0.788841123621361}], [{'name': '部门1', 'value': 11, 'tongbi': 0.4199650543322204, 'huanbi': 0.600682836340113}], [{'name': '部门1', 'value': 20, 'tongbi': 0.07307651975749185, 'huanbi': 0.8954941985252319}], [{'name': '部门1', 'value': 11, 'tongbi': 0.8475579116921738, 'huanbi': 0.7574803832597906}], [{'name': '部门1', 'value': 16, 'tongbi': 0.8100627113404443, 'huanbi': 0.7326512355025334}, {'name': '部门2', 'value': 12, 'tongbi': 0.43659153037857856, 'huanbi': 0.9438856753095781}, {'name': '部门3', 'value': 15, 'tongbi': 0.9057434082850526, 'huanbi': 0.9782199159162027}, {'name': '部门4', 'value': 11, 'tongbi': 0.7063423527479401, 'huanbi': 0.2233661781572941}], [{'name': '部门1', 'value': 11, 'tongbi': 0.9788067429038488, 'huanbi': 0.8571351497260006}]] data_filter['customer'] = [[{'name': '客户1', 'value': 1395, 'tongbi': 0.1755414423249816, 'huanbi': 0.8910710210503374}, {'name': '客户2', 'value': 93123, 'tongbi': 0.05077253680306304, 'huanbi': 0.5209032312567664}, {'name': '客户3', 'value': 149529, 'tongbi': 0.9964389489921063, 'huanbi': 0.5890264204089349}], [{'name': '客户1', 'value': 112207, 'tongbi': 0.5905281467206048, 'huanbi': 0.5232919388202898}, {'name': '客户2', 'value': 112887, 'tongbi': 0.6182842728214855, 'huanbi': 0.7787045954128201}, {'name': '客户3', 'value': 52006, 'tongbi': 0.02190452984112512, 'huanbi': 0.24637184831614012}], [{'name': '客户1', 'value': 55590, 'tongbi': 0.6098634617606431, 'huanbi': 0.8192796559733513}], [{'name': '客户1', 'value': 105095, 'tongbi': 0.20397842693140122, 'huanbi': 0.20672896222259973}, {'name': '客户2', 'value': 86426, 'tongbi': 0.9891260454298243, 'huanbi': 0.46400732564305036}], [{'name': '客户1', 'value': 169771, 'tongbi': 0.26916456799291166, 'huanbi': 0.7337435343923782}, {'name': '客户2', 'value': 51013, 'tongbi': 0.0194105979887218, 'huanbi': 0.12576969379845304}], [{'name': '客户1', 'value': 188050, 'tongbi': 0.9390562782294528, 'huanbi': 0.12690973870421007}, {'name': '客户2', 'value': 155011, 'tongbi': 0.03859532478636862, 'huanbi': 0.24827442388748966}, {'name': '客户3', 'value': 163350, 'tongbi': 0.5990679075450129, 'huanbi': 0.433537510200813}, {'name': '客户4', 'value': 131928, 'tongbi': 0.7291227892463691, 'huanbi': 0.2852720427402581}, {'name': '客户5', 'value': 107817, 'tongbi': 0.3664424446660455, 'huanbi': 0.4946087711229721}], [{'name': '客户1', 'value': 99433, 'tongbi': 0.3669599448300275, 'huanbi': 0.554933562557306}], [{'name': '客户1', 'value': 40128, 'tongbi': 0.14372568850024114, 'huanbi': 0.6599294499043655}, {'name': '客户2', 'value': 46432, 'tongbi': 0.26484949405453484, 'huanbi': 0.3629494145890876}, {'name': '客户3', 'value': 54204, 'tongbi': 0.00555382894156442, 'huanbi': 0.9357837105151469}, {'name': '客户4', 'value': 185556, 'tongbi': 0.3760834017727994, 'huanbi': 0.9185281967130325}], [{'name': '客户1', 'value': 1939, 'tongbi': 0.07141239708657343, 'huanbi': 0.9460267756381693}], [{'name': '客户1', 'value': 143106, 'tongbi': 0.8406572467976836, 'huanbi': 0.005274741860648358}], [{'name': '客户1', 'value': 30181, 'tongbi': 0.7790634241446586, 'huanbi': 0.2539270472688506}, {'name': '客户2', 'value': 87316, 'tongbi': 0.06545662430813926, 'huanbi': 0.6380900326068786}, {'name': '客户3', 'value': 122722, 'tongbi': 0.618214250105991, 'huanbi': 0.13860329095984314}], [{'name': '客户1', 'value': 77685, 'tongbi': 0.9341514668150048, 'huanbi': 0.09618215051927959}, {'name': '客户2', 'value': 105133, 'tongbi': 0.6776712761680012, 'huanbi': 0.08985369747376704}, {'name': '客户3', 'value': 109631, 'tongbi': 0.3711718543405126, 'huanbi': 0.2525952099137566}]] data_filter['reseller'] = [[{'name': '分销商1', 'value': 217302, 'tongbi': 0.6961913887160023, 'huanbi': 0.40059108366642493}], [{'name': '分销商1', 'value': 166858, 'tongbi': 0.7327765489155792, 'huanbi': 0.9686797914717927}, {'name': '分销商2', 'value': 434007, 'tongbi': 0.37500517434492786, 'huanbi': 0.33945303955310147}], [{'name': '分销商1', 'value': 145717, 'tongbi': 0.908354078612941, 'huanbi': 0.2296488136930116}, {'name': '分销商2', 'value': 248420, 'tongbi': 0.30600300255814195, 'huanbi': 0.39741612220903966}], [{'name': '分销商1', 'value': 168104, 'tongbi': 0.5585019369965601, 'huanbi': 0.26080789381223823}, {'name': '分销商2', 'value': 30008, 'tongbi': 0.48949598251799775, 'huanbi': 0.7814509510088288}, {'name': '分销商3', 'value': 249936, 'tongbi': 0.5922164755077848, 'huanbi': 0.8342159066883174}, {'name': '分销商4', 'value': 60351, 'tongbi': 0.9052517659904215, 'huanbi': 0.9607047206289411}], [{'name': '分销商1', 'value': 53543, 'tongbi': 0.637630359461641, 'huanbi': 0.07169122731133182}, {'name': '分销商2', 'value': 80732, 'tongbi': 0.27299687364657044, 'huanbi': 0.6687275592610397}, {'name': '分销商3', 'value': 39125, 'tongbi': 0.47197116479571966, 'huanbi': 0.43588339249963115}, {'name': '分销商4', 'value': 278527, 'tongbi': 0.19262590689429449, 'huanbi': 0.3211267168479933}, {'name': '分销商5', 'value': 258970, 'tongbi': 0.6677796547278411, 'huanbi': 0.7290337705475722}], [{'name': '分销商1', 'value': 365477, 'tongbi': 0.28327799955034727, 'huanbi': 0.514290789570248}, {'name': '分销商2', 'value': 77687, 'tongbi': 0.7208898005334363, 'huanbi': 0.3524322226008797}, {'name': '分销商3', 'value': 249862, 'tongbi': 0.9428607644734955, 'huanbi': 0.8566294120900859}, {'name': '分销商4', 'value': 180095, 'tongbi': 0.7443806153325987, 'huanbi': 0.09483935910905283}, {'name': '分销商5', 'value': 459034, 'tongbi': 0.5305380651112979, 'huanbi': 0.5915673614403409}], [{'name': '分销商1', 'value': 205680, 'tongbi': 0.6836319738958906, 'huanbi': 0.403840876427107}, {'name': '分销商2', 'value': 420900, 'tongbi': 0.895479597187409, 'huanbi': 0.9622760895023612}, {'name': '分销商3', 'value': 211116, 'tongbi': 0.38973429978778495, 'huanbi': 0.3006449328704339}, {'name': '分销商4', 'value': 369907, 'tongbi': 0.45120933006162833, 'huanbi': 0.3549205189411515}, {'name': '分销商5', 'value': 321933, 'tongbi': 0.19520313249232757, 'huanbi': 0.19387121415957276}], [{'name': '分销商1', 'value': 94587, 'tongbi': 0.05418302496511973, 'huanbi': 0.7117788942571864}, {'name': '分销商2', 'value': 390894, 'tongbi': 0.03194936765452694, 'huanbi': 0.5607748386198614}, {'name': '分销商3', 'value': 110578, 'tongbi': 0.41221185500937496, 'huanbi': 0.29308450627556093}], [{'name': '分销商1', 'value': 86127, 'tongbi': 0.7162256069237833, 'huanbi': 0.5560843978160767}, {'name': '分销商2', 'value': 296115, 'tongbi': 0.9826982438669054, 'huanbi': 0.7092479303169489}], [{'name': '分销商1', 'value': 291162, 'tongbi': 0.9026170468406022, 'huanbi': 0.35309070674252785}, {'name': '分销商2', 'value': 408662, 'tongbi': 0.8569938426804801, 'huanbi': 0.1021074341248216}, {'name': '分销商3', 'value': 46684, 'tongbi': 0.05442901141473111, 'huanbi': 0.9713666180831291}, {'name': '分销商4', 'value': 358522, 'tongbi': 0.15421907489413433, 'huanbi': 0.2447707823841434}, {'name': '分销商5', 'value': 356876, 'tongbi': 0.1119859845753578, 'huanbi': 0.25150317919145715}], [{'name': '分销商1', 'value': 369563, 'tongbi': 0.823336484690574, 'huanbi': 0.9288874960588193}], [{'name': '分销商1', 'value': 41934, 'tongbi': 0.6662388594383855, 'huanbi': 0.5389574336706425}, {'name': '分销商2', 'value': 39093, 'tongbi': 0.9728475291156298, 'huanbi': 0.6069112425841225}, {'name': '分销商3', 'value': 484658, 'tongbi': 0.16646381529948884, 'huanbi': 0.8048573513194462}]] data_filter['provider'] = [[{'name': '供应商1', 'value': 367417, 'tongbi': 0.23034227054929735, 'huanbi': 0.40203996790696095}, {'name': '供应商2', 'value': 115465, 'tongbi': 0.5424771237425942, 'huanbi': 0.33061328989785455}, {'name': '供应商3', 'value': 244079, 'tongbi': 0.5741474485853009, 'huanbi': 0.6274856331531158}, {'name': '供应商4', 'value': 36705, 'tongbi': 0.8662562571546141, 'huanbi': 0.9881653664102721}, {'name': '供应商5', 'value': 90726, 'tongbi': 0.9396074787201926, 'huanbi': 0.8956963988045765}], [{'name': '供应商1', 'value': 475492, 'tongbi': 0.6119191472550081, 'huanbi': 0.026548320474665266}, {'name': '供应商2', 'value': 89138, 'tongbi': 0.8191349052692816, 'huanbi': 0.7119523803873258}, {'name': '供应商3', 'value': 476620, 'tongbi': 0.9991430157248191, 'huanbi': 0.7505299822636461}, {'name': '供应商4', 'value': 160618, 'tongbi': 0.8130253623811972, 'huanbi': 0.7257186481108269}, {'name': '供应商5', 'value': 13334, 'tongbi': 0.4154281144980454, 'huanbi': 0.22517567212332246}], [{'name': '供应商1', 'value': 421913, 'tongbi': 0.428424934005722, 'huanbi': 0.5082654186549648}, {'name': '供应商2', 'value': 72881, 'tongbi': 0.1254335255125112, 'huanbi': 0.5629669155198499}, {'name': '供应商3', 'value': 75139, 'tongbi': 0.6962418874163323, 'huanbi': 0.4485760460199104}, {'name': '供应商4', 'value': 222883, 'tongbi': 0.1953291161511279, 'huanbi': 0.9752036709502471}, {'name': '供应商5', 'value': 435627, 'tongbi': 0.02075930869321574, 'huanbi': 0.5175761575745073}], [{'name': '供应商1', 'value': 10953, 'tongbi': 0.20554108166323526, 'huanbi': 0.8813017116580415}, {'name': '供应商2', 'value': 307051, 'tongbi': 0.3893430534853174, 'huanbi': 0.8609204196170464}, {'name': '供应商3', 'value': 199401, 'tongbi': 0.02340868629627535, 'huanbi': 0.8475628405544897}, {'name': '供应商4', 'value': 294361, 'tongbi': 0.5736857365478717, 'huanbi': 0.7782193133082534}], [{'name': '供应商1', 'value': 157723, 'tongbi': 0.8226339691239748, 'huanbi': 0.3304713906961668}], [{'name': '供应商1', 'value': 218078, 'tongbi': 0.37773229667204533, 'huanbi': 0.7301183997957051}, {'name': '供应商2', 'value': 446878, 'tongbi': 0.9295094944787083, 'huanbi': 0.7973345564490975}], [{'name': '供应商1', 'value': 385369, 'tongbi': 0.50303670648988, 'huanbi': 0.40411467848885196}], [{'name': '供应商1', 'value': 261124, 'tongbi': 0.7370492448308036, 'huanbi': 0.4930316553038804}, {'name': '供应商2', 'value': 345763, 'tongbi': 0.861046735383232, 'huanbi': 0.8446108626452536}, {'name': '供应商3', 'value': 238674, 'tongbi': 0.1697424815713353, 'huanbi': 0.18848053290895217}, {'name': '供应商4', 'value': 13199, 'tongbi': 0.300383780971347, 'huanbi': 0.5773802696344024}, {'name': '供应商5', 'value': 93382, 'tongbi': 0.7632155084005192, 'huanbi': 0.5243400434396144}], [{'name': '供应商1', 'value': 61785, 'tongbi': 0.9563048133905577, 'huanbi': 0.7102320679243359}, {'name': '供应商2', 'value': 232773, 'tongbi': 0.3078341701443913, 'huanbi': 0.3820986979698806}, {'name': '供应商3', 'value': 433107, 'tongbi': 0.9320109519989676, 'huanbi': 0.07065251656894644}, {'name': '供应商4', 'value': 460617, 'tongbi': 0.44972354068613507, 'huanbi': 0.9448788867623547}, {'name': '供应商5', 'value': 457839, 'tongbi': 0.007546823112234313, 'huanbi': 0.36919259350633105}], [{'name': '供应商1', 'value': 168333, 'tongbi': 0.5380080397207979, 'huanbi': 0.7301298315645788}, {'name': '供应商2', 'value': 212061, 'tongbi': 0.03565521190910881, 'huanbi': 0.2312674936447905}, {'name': '供应商3', 'value': 336918, 'tongbi': 0.9647195651499568, 'huanbi': 0.6757652503825738}, {'name': '供应商4', 'value': 496239, 'tongbi': 0.09347142467408187, 'huanbi': 0.02815003851229736}, {'name': '供应商5', 'value': 399331, 'tongbi': 0.19279726835621136, 'huanbi': 0.4053827966807869}], [{'name': '供应商1', 'value': 80628, 'tongbi': 0.22383446539255802, 'huanbi': 0.9026993888085717}, {'name': '供应商2', 'value': 462412, 'tongbi': 0.1878072482387736, 'huanbi': 0.10906437222704457}, {'name': '供应商3', 'value': 496123, 'tongbi': 0.8901831143821385, 'huanbi': 0.18826644096938272}], [{'name': '供应商1', 'value': 321252, 'tongbi': 0.872429227822935, 'huanbi': 0.3137533598370753}, {'name': '供应商2', 'value': 13057, 'tongbi': 0.2756408967720345, 'huanbi': 0.30097059453562935}]] return data_filter async def two_year_num(ns={}): """ 两年内数量合并 :param ns: :return: """ sor = ns.get('sor') current_year = time.localtime().tm_year dic = {} if ns.get('orgid') and ns.get('org_type'): orgid = ns.get('orgid') org_type = ns.get('org_type') # 今年12个月客户量 dic = { 'orgid': orgid, 'current_year': current_year, 'org_type': org_type, 'sor': sor } if ns.get('salemanid'): dic = { 'sor': sor, 'salemanid': ns.get('salemanid'), 'current_year': current_year } current_year_customer_number = await calculate_count(dic) # 运营去年12个月客户量 dic['current_year'] = current_year - 1 last_year_customer_num = await calculate_count(dic) last_year_customer_num.extend(current_year_customer_number) return last_year_customer_num async def calculate_count(ns={}): """ 计算不同月份客户量 :param ns: :return: """ sor = ns.get('sor') current_year = ns.get('current_year') count_li = [] if ns.get('orgid') and ns.get('org_type'): orgid = ns.get('orgid') org_type = ns.get('org_type') # 总量,同比,环比 if org_type == '2, 3': count_sql = """SELECT count(*) AS 'user_count', date_format(create_at, '%%m') AS month FROM organization WHERE year(create_at) = ${current_year}$ AND parentid = ${orgid}$ AND org_type IN (2, 3) AND del_flg = '0' GROUP BY month;""" else: count_sql = """SELECT count(*) AS 'user_count', date_format(create_at, '%%m') AS month FROM organization WHERE year(create_at) = ${current_year}$ AND parentid = ${orgid}$ AND org_type = ${org_type}$ AND del_flg = '0' GROUP BY month;""" count_li = await sor.sqlExe(count_sql, {'orgid': orgid, 'current_year': current_year, 'org_type': org_type}) if ns.get('salemanid'): count_sql = """SELECT count(*) AS 'user_count', date_format(create_at, '%%m') AS month FROM customer WHERE year(create_at) = ${current_year}$ AND salemanid = ${salemanid}$ AND del_flg = '0' GROUP BY month;""" count_li = await sor.sqlExe(count_sql, {'current_year': current_year, 'salemanid': ns.get('salemanid')}) # 12个月总量 count_init = [item * 0 for item in range(12)] for user_count in count_li: count_init[int(user_count['month']) - 1] = user_count['user_count'] return count_init async def single_person_consumption(ns={}): """ 个人消费 :param ns: :return: """ ns = { 'userid': 'sa-9_B-VjlnhaUzAzUvZt', 'current_year': '2023', 'current_month': '2023-08-16' } userid = await get_user() current_year = ns.get('current_year') current_month = ns.get('current_month') db = DBPools() async with db.sqlorContext('kboss') as sor: orgid = (await sor.R('users', {'id': userid, 'del_flg': '0'}))[0]['orgid'] accountid = (await sor.R('account', {'orgid': orgid, 'del_flg': '0'}))[0]['id'] # 消费总计 account_sum_sql = """select sum(amount) as sum_count from acc_detail where accountid = '%s' and summary = 'BUY' and del_flg = '0';""" % accountid account_count = (await sor.sqlExe(account_sum_sql, {}))[0]['sum_count'] # 指定某年某月 if current_year and current_month: sum_sql = f"""select sum(amount) as sum_count from acc_detail where accountid = '{accountid}' and summary = 'BUY' and MONTH(acc_date)=MONTH('{current_month}') and YEAR(acc_date)='{current_year}' and del_flg = '0';""" # 本年/本月消费 elif current_year: sum_sql = f"""select sum(amount) as sum_count, date_format(acc_date, '%%Y') months from acc_detail where accountid = '{accountid}' and summary = 'BUY' and YEAR(acc_date)=YEAR('{current_year}') and del_flg = '0' group by months;""" else: sum_sql = f"""select sum(amount) as sum_count, date_format(acc_date, '%%m') months from acc_detail where accountid = '{accountid}' and summary = 'BUY' and MONTH(acc_date)=MONTH('{current_month}') and del_flg = '0' group by months;""" account_sum_li = await sor.sqlExe(sum_sql, {}) if account_sum_li: account_sum = account_sum_li[0]['sum_count'] else: account_sum = 0 print(account_sum) async def operate_kpi(ns={}): """ 运营kpi 入参: 本机构id 出参: 每个字段对应数组 客户数(总量,同比,环比) 销售额(总量,同比,环比) 利润分析(总额,同比,环比) 分销商数(总量,同比,环比) 供应商数(总量,同比,环比) :param ns: :return: """ db = DBPools() async with db.sqlorContext('kboss') as sor: try: if ns.get('type') == '运营': orgid_li = await sor.R('users', {'id': await get_user()}) orgid = orgid_li[0]['orgid'] # 运营客户数 customer_num = await two_year_num({'orgid': orgid, 'org_type': '2, 3', 'sor': sor}) # customer_num = [random.randint(30, 80) for i in range(0, 24)] customer_num = [36, 46, 56, 55, 50, 60, 43, 54, 78, 60, 67, 39, 73, 42, 53, 62, 38, 47, 73, 78, 75, 30, 44, 30] # 运营供应商数 provider_num = await two_year_num({'orgid': orgid, 'org_type': '4', 'sor': sor}) provider_num = [39, 40, 50, 55, 20, 60, 33, 54, 99, 60, 12, 39, 73, 34, 53, 98, 38, 89, 73, 31, 75, 40, 44, 50] # 运营分销商数 reseller_num = await two_year_num({'orgid': orgid}) reseller_num = [39, 4, 30, 50, 25, 60, 80, 54, 100, 60, 4, 39, 60, 34, 53, 20, 38, 89, 10, 31, 75, 20, 44, 90] # 运营销售额 sales = '' sales = [198614, 450739, 188721, 145228, 191228, 264328, 196085, 364975, 386814, 280621, 262761, 492403, 253561, 407107, 122927, 162369, 221448, 344153, 275094, 141592, 101578, 407980, 371456, 216048] # 利润分析 profit = '' profit = [482993, 468981, 283445, 286613, 458930, 179825, 134570, 314190, 50974, 325716, 82643, 220191, 242830, 159058, 209069, 254864, 336909, 266201, 471213, 80043, 267612, 65655, 81858, 148810] # 生成日期 date_m = list(pandas.date_range('1/%s' % (time.localtime().tm_year - 1), periods=24, freq='M')) customer_filter = await tongbi_huanbi({'date_m': date_m, 'number': customer_num, 'flag': '运营'}) provider_filter = await tongbi_huanbi({'date_m': date_m, 'number': provider_num, 'flag': '运营'}) reseller_filter = await tongbi_huanbi({'date_m': date_m, 'number': reseller_num, 'flag': '运营'}) sales_filter = await tongbi_huanbi({'date_m': date_m, 'number': sales, 'flag': '运营'}) profit_filter = await tongbi_huanbi({'date_m': date_m, 'number': profit, 'flag': '运营利润'}) username_li = await sor.R('users', {'id': await get_user(), 'del_flg': '0'}) if username_li: username = username_li[0]['username'] else: username = '' return { "status": True, "msg": "kpi get success", 'bind_type': ns.get('type'), 'bind_name': username, "data": { 'customer': customer_filter, 'provider': provider_filter, 'reseller': reseller_filter, 'sales': sales_filter, 'profit': profit_filter } } elif ns.get('type') == '销售': salemanid = await get_user() # 销售客户数 customer_num = await two_year_num({'salemanid': salemanid, 'sor': sor}) customer_num = [36, 46, 56, 55, 50, 60, 43, 54, 78, 60, 67, 39, 73, 42, 53, 62, 38, 47, 73, 78, 75, 36, 44, 30] # 销售额 # 24个月销售额 # 绑定客户24个月消费 # 查看当前月有多少客户 # 查看这个客户在当前月消费多少 sales = [198614, 450739, 188721, 145228, 191228, 264328, 196085, 364975, 386814, 280621, 262761, 492403, 253561, 407107, 122927, 162369, 221448, 344153, 275094, 141592, 101578, 407980, 371456, 216048] # 分销商数 reseller_num = [39, 4, 30, 50, 25, 60, 80, 54, 100, 60, 4, 39, 60, 34, 53, 20, 38, 89, 10, 31, 75, 20, 44, 90] # 生成日期 date_m = list(pandas.date_range('1/%s' % (time.localtime().tm_year - 1), periods=24, freq='M')) customer_filter = await tongbi_huanbi({'date_m': date_m, 'number': customer_num}) sales_filter = await tongbi_huanbi({'date_m': date_m, 'number': sales}) reseller_filter = await tongbi_huanbi({'date_m': date_m, 'number': reseller_num}) saleman_name_li = await sor.R('users', {'id': salemanid}) if saleman_name_li: saleman_name = saleman_name_li[0]['username'] else: saleman_name = '' return { "status": True, "msg": "kpi get success", 'bind_type': ns.get('type'), 'bind_name': saleman_name, "data": { 'customer': customer_filter, 'sales': sales_filter, 'reseller': reseller_filter, } } except Exception as e: raise e return { "status": False, "msg": "kpi search failed" } async def revenue_analysis(ns={}): """ 收入分析 :param ns: :return: """ ns = { 'time': 'total', 'userid': '' } use_type = ns.get('time') if use_type == 'total': # 收入客户贡献TOP10 customer_filter = [{'甘曼蔓': 2243}, {'傅湘云': 3214}, {'富美玲': 3237}, {'邓如曼': 4900}, {'须凤歌': 7098}, {'慕艾玲': 7200}, {'薛青寒': 10684}, {'勾迎曼': 14492}, {'瞿幼柏': 17974}, {'于莺韵': 19530}] # 收入产品贡献TOP10 product_filter = [{'product8': 40771}, {'product3': 68455}, {'product5': 87400}, {'product1': 108562}, {'product9': 121656}, {'product6': 122339}, {'product2': 160835}, {'product4': 189349}, {'product7': 189435}, {'product0': 197421}] # 收入销售贡献TOP10 saler_filter = [{'销售8': 39335}, {'销售0': 43783}, {'销售1': 49300}, {'销售5': 65572}, {'销售6': 94224}, {'销售2': 116781}, {'销售9': 117257}, {'销售4': 117279}, {'销售3': 140242}, {'销售7': 198299}] # 收入分销商贡献TOP10 reseller_filter = [{'分销商5': 68789}, {'分销商4': 80512}, {'分销商8': 83126}, {'分销商1': 92314}, {'分销商9': 93245}, {'分销商2': 95666}, {'分销商0': 170798}, {'分销商7': 264210}, {'分销商6': 273289}, {'分销商3': 281382}] # 收入供应商贡献TOP10 provider_filter = [{'供应商8': 117586}, {'供应商5': 146763}, {'供应商1': 163715}, {'供应商2': 281236}, {'供应商4': 301530}, {'供应商6': 303358}, {'供应商0': 324926}, {'供应商9': 372192}, {'供应商7': 482176}, {'供应商3': 505249}] elif use_type == 'month': # 收入客户贡献TOP10 customer_filter = [{'曼蔓': 243}, {'傅云': 314}, {'富玲': 437}, {'邓曼': 500}, {'须歌': 698}, {'慕玲': 700}, {'薛寒': 884}, {'勾曼': 992}, {'瞿柏': 1074}, {'于韵': 1130}] # 收入产品贡献TOP10 product_filter = [{'product8': 1771}, {'product3': 2455}, {'product5': 3400}, {'product1': 3562}, {'product9': 4656}, {'product6': 5339}, {'product2': 6835}, {'product4': 7349}, {'product7': 89435}, {'product0': 97421}] # 收入销售贡献TOP10 saler_filter = [{'销售8': 1335}, {'销售0': 2783}, {'销售1': 3300}, {'销售5': 4572}, {'销售6': 5224}, {'销售2': 6781}, {'销售9': 7257}, {'销售4': 8279}, {'销售3': 140242}, {'销售7': 198299}] # 收入分销商贡献TOP10 reseller_filter = [{'分销商3': 95294}, {'分销商4': 136740}, {'分销商6': 146426}, {'分销商9': 242342}, {'分销商1': 343503}, {'分销商0': 353984}, {'分销商8': 379048}, {'分销商2': 428907}, {'分销商5': 543138}, {'分销商7': 575466}] # 收入供应商贡献TOP10 provider_filter = [{'供应商9': 152398}, {'供应商6': 162324}, {'供应商5': 265996}, {'供应商1': 311509}, {'供应商2': 331525}, {'供应商7': 442458}, {'供应商3': 488528}, {'供应商4': 568126}, {'供应商0': 570370}, {'供应商8': 589015}] else: # 收入客户贡献TOP10 customer_filter = [{'邓如曼9': 2416}, {'须凤歌4': 3486}, {'于莺韵3': 4018}, {'甘曼蔓0': 4078}, {'瞿幼柏8': 4115}, {'薛青寒6': 4129}, {'傅湘云2': 6502}, {'勾迎曼1': 6847}, {'慕艾玲7': 8406}, {'富美玲5': 8648}] # 收入产品贡献TOP10 product_filter = [{'product1': 2026}, {'product3': 2446}, {'product6': 2638}, {'product9': 2645}, {'product0': 2707}, {'product7': 2736}, {'product2': 2792}, {'product5': 2895}, {'product8': 2924}, {'product4': 2985}] # 收入销售贡献TOP10 saler_filter = [{'销售9': 2148}, {'销售6': 2204}, {'销售8': 3675}, {'销售1': 4151}, {'销售0': 4470}, {'销售4': 4783}, {'销售2': 5595}, {'销售3': 6542}, {'销售5': 6789}, {'销售7': 7469}] # 收入分销商贡献TOP10 reseller_filter = [{'分销商4': 13157}, {'分销商8': 16102}, {'分销商0': 36519}, {'分销商5': 37099}, {'分销商2': 43437}, {'分销商1': 43966}, {'分销商9': 47948}, {'分销商6': 52943}, {'分销商3': 53793}, {'分销商7': 57453}] # 收入供应商贡献TOP10 provider_filter = [{'供应商4': 20645}, {'供应商7': 21567}, {'供应商9': 22314}, {'供应商5': 28103}, {'供应商3': 28600}, {'供应商2': 33063}, {'供应商0': 43690}, {'供应商1': 45111}, {'供应商8': 46151}, {'供应商6': 54639}] return { 'status': True, 'msg': 'revenueanalysis kpi get success', 'bind_name': '收入分析', 'data': { 'customer': customer_filter, 'product': product_filter, 'saler': saler_filter, 'reseller': reseller_filter, 'provider': provider_filter } } ret = await operate_kpi(params_kw) return ret