kboss/b/kpi/operate_kpi.dspy
2025-07-16 14:27:17 +08:00

350 lines
48 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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