| 16:50:35.558 | trace | yii\base\Application::bootstrap | Bootstrap with yii\log\Dispatcher |
| 16:50:35.558 | trace | yii\base\Module::getModule | Loading module: debug |
| 16:50:35.558 | trace | yii\base\Application::bootstrap | Bootstrap with yii\debug\Module::bootstrap() |
| 16:50:35.558 | trace | yii\redis\Connection::open | Opening redis DB connection: redis.server.local:6379, database=1 |
| 16:50:35.559 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: SELECT |
| 16:50:35.559 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 16:50:35.559 | info | time tracing start | 1780476635559375104 |
| 16:50:35.559 | trace | yii\web\UrlManager::parseRequest | No matching URL rules. Using default URL parsing logic. |
| 16:50:35.559 | trace | yii\web\Application::handleRequest | Route requested: 'vue/analysis/clients' |
| 16:50:35.559 | trace | yii\base\Module::getModule | Loading module: vue |
| 16:50:35.560 | info | yii\web\Session::open | Session started |
| 16:50:35.560 | info | yii\db\Command::query | SELECT * FROM "global"."vw_user_login" WHERE "id"=1001 |
| 16:50:35.560 | info | yii\db\Connection::open | Opening DB connection: pgsql:host=postgresql.server.local;port=5432;dbname=beta |
| 16:50:35.561 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 16:50:35.562 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: MGET |
| 16:50:35.562 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 16:50:35.562 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: MGET |
| 16:50:35.562 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_users" WHERE "id"=1001 |
| 16:50:35.563 | trace | yii\base\Controller::runAction | Route to run: vue/analysis/clients |
| 16:50:35.563 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 16:50:35.564 | trace | uranus\rbac\DbManager::checkAccessFromCache | Checking role: Admin |
| 16:50:35.564 | trace | yii\base\InlineAction::runWithParams | Running action: app\modules\vue\controllers\AnalysisController::actionClients() |
| 16:50:35.564 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 16:50:35.565 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 16:50:35.567 | info | yii\db\Command::query | SELECT COUNT(*) FROM (SELECT
final.id,
final.name,
final.sales_rep,
final.status3_budgets,
final.status3_profits,
final.status3_count,
final.status3_pct,
final.status1_budgets,
final.status1_count,
final.status2_budgets,
final.status2_count,
final.pscount,
final.ircount,
(final.pstime + final.irtime) AS service_time,
(final.pscount + final.ircount) AS service_count,
(now() - final.created_at) AS sales_rep_time,
final.created_at,
final.work_time,
final.work_count,
final.last_bargain_date,
final.reimbursement_amount,
final.points,
CASE WHEN final.cooperated IS NULL THEN false ELSE true END AS cooperated,
final.client_industry,
final.client_industry_id,
final.client_type,
final.client_type_id,
final.score,
final.collected,
final.un_collected,
final.invoices,
final.un_invoices,
final.project_count,
final.other_budgets,
final.used_clients,
final.status12_budgets,
final.status12_profits,
final.work1_time,
final.work1_count,
final.work2_time,
final.work2_count,
final.work3_time,
final.work3_count,
final.work4_time,
final.work4_count,
final.work5_time,
final.work5_count
FROM (SELECT
c.id,
c.name,
c.sales_rep,
c.created_at,
CASE WHEN tmp_project_period.status3_budgets IS NULL THEN 0 ELSE tmp_project_period.status3_budgets END AS status3_budgets,
CASE WHEN tmp_project_period.status3_profits IS NULL THEN 0 ELSE tmp_project_period.status3_profits END AS status3_profits,
CASE WHEN tmp_project_period.status3_budgets IS NULL OR tmp_project_period.status3_budgets = 0 THEN 0 ELSE tmp_project_period.status3_profits / tmp_project_period.status3_budgets END AS status3_pct,
CASE WHEN tmp_project_period.status3_count IS NULL THEN 0 ELSE tmp_project_period.status3_count END AS status3_count,
CASE WHEN tmp_project_period.collected IS NULL THEN 0 ELSE tmp_project_period.collected END AS collected,
CASE WHEN tmp_project_period.used_clients IS NULL THEN 0 ELSE tmp_project_period.used_clients END AS used_clients,
CASE WHEN tmp_project_period.un_collected IS NULL THEN 0 ELSE tmp_project_period.un_collected END AS un_collected,
CASE WHEN tmp_project_period.status1_budgets IS NULL THEN 0 ELSE tmp_project_period.status1_budgets END AS status1_budgets,
CASE WHEN tmp_project_period.status1_count IS NULL THEN 0 ELSE tmp_project_period.status1_count END AS status1_count,
CASE WHEN tmp_project_period.status2_budgets IS NULL THEN 0 ELSE tmp_project_period.status2_budgets END AS status2_budgets,
CASE WHEN tmp_project_period.status2_count IS NULL THEN 0 ELSE tmp_project_period.status2_count END AS status2_count,
CASE WHEN tmp4.pre_sales_counts IS NULL THEN 0 ELSE tmp4.pre_sales_counts END AS pscount,
CASE WHEN tmp5.implement_counts IS NULL THEN 0 ELSE tmp5.implement_counts END AS ircount,
CASE WHEN tmp4.pre_sales_times IS NOT NULL THEN EXTRACT(EPOCH FROM tmp4.pre_sales_times)/3600 ELSE 0 END AS pstime,
CASE WHEN tmp5.implement_times IS NOT NULL THEN EXTRACT(EPOCH FROM tmp5.implement_times)/3600 ELSE 0 END AS irtime,
CASE WHEN tmp6.sales_rep_time IS NOT NULL THEN EXTRACT(EPOCH FROM tmp6.sales_rep_time )/3600 ELSE 0 END AS sales_rep_time,
CASE WHEN tmp_work.work_time IS NOT NULL THEN tmp_work.work_time ELSE '00:00:00'::interval END AS work_time,
CASE WHEN tmp_work.work_count IS NOT NULL THEN tmp_work.work_count ELSE 0 END AS work_count,
CASE WHEN tmp8.reimbursement_amount IS NOT NULL THEN tmp8.reimbursement_amount ELSE 0 END AS reimbursement_amount,
tmp_project_period.last_bargain_date,
CASE WHEN tmp9.points IS NOT NULL THEN tmp9.points ELSE 0 END AS points,
CASE WHEN tmp10.invoices IS NULL THEN 0 ELSE tmp10.invoices END AS invoices,
CASE WHEN tmp10.un_invoices IS NULL THEN 0 ELSE tmp10.un_invoices END AS un_invoices,
CASE WHEN tmp_project_period.status3_count IS NULL OR tmp_project_period.status3_count = 0 THEN NULL ELSE tmp_project_period.status3_count END AS cooperated,
ci.name as client_industry,
ci.id as client_industry_id,
ct.name as client_type,
ct.id as client_type_id,
CASE WHEN tmp_project_all.project_count IS NULL THEN 0 ELSE tmp_project_all.project_count END AS project_count,
CASE WHEN tmp_project_all.other_budgets IS NULL THEN 0 ELSE tmp_project_all.other_budgets END AS other_budgets,
CASE WHEN tmp_project_period.status12_budgets IS NULL THEN 0 ELSE tmp_project_period.status12_budgets END AS status12_budgets,
CASE WHEN tmp_project_period.status12_profits IS NULL THEN 0 ELSE tmp_project_period.status12_profits END AS status12_profits,
CASE WHEN tmp_work.work1_time IS NOT NULL THEN tmp_work.work1_time ELSE '00:00:00'::interval END AS work1_time,
CASE WHEN tmp_work.work1_count IS NOT NULL THEN tmp_work.work1_count ELSE 0 END AS work1_count,
CASE WHEN tmp_work.work2_time IS NOT NULL THEN tmp_work.work2_time ELSE '00:00:00'::interval END AS work2_time,
CASE WHEN tmp_work.work2_count IS NOT NULL THEN tmp_work.work2_count ELSE 0 END AS work2_count,
CASE WHEN tmp_work.work3_time IS NOT NULL THEN tmp_work.work3_time ELSE '00:00:00'::interval END AS work3_time,
CASE WHEN tmp_work.work3_count IS NOT NULL THEN tmp_work.work3_count ELSE 0 END AS work3_count,
CASE WHEN tmp_work.work4_time IS NOT NULL THEN tmp_work.work4_time ELSE '00:00:00'::interval END AS work4_time,
CASE WHEN tmp_work.work4_count IS NOT NULL THEN tmp_work.work4_count ELSE 0 END AS work4_count,
CASE WHEN tmp_work.work5_time IS NOT NULL THEN tmp_work.work5_time ELSE '00:00:00'::interval END AS work5_time,
CASE WHEN tmp_work.work5_count IS NOT NULL THEN tmp_work.work5_count ELSE 0 END AS work5_count,
CASE WHEN c.client_class IS NOT NULL THEN (
(CASE WHEN cc.contact_base > 0 THEN floor(CASE WHEN c.contact_count > cc.contact_base THEN 1 * 15 ELSE c.contact_count * 15 / cc.contact_base END) ELSE 15 END)
+
floor(c.client_base_info_count * 15 / 9)
+
(CASE WHEN cc.visit_base > 0 THEN floor(CASE WHEN c.visit_count > ceil((CASE WHEN extract(year from now()) = extract(year from c.created_at::date) THEN (now()::date - c.created_at::date + 1)::float ELSE 154::float END) / cc.visit_base::float) THEN 1 * 20 ELSE c.visit_count * 20 / ceil((CASE WHEN extract(year from now()) = extract(year from c.created_at::date) THEN (now()::date - c.created_at::date + 1)::float ELSE 154::float END) / cc.visit_base::float) END) ELSE 20 END)
+
(CASE WHEN cc.cooperate_base > 0 THEN floor(CASE WHEN c.cooperate_count > cc.cooperate_base THEN 1 * 20 ELSE c.cooperate_count * 20 / cc.cooperate_base END) ELSE 20 END)
+
(CASE WHEN cc.case_pre_sales_base > 0 THEN floor(CASE WHEN c.case_pre_sales_count > cc.case_pre_sales_base THEN 1 * 15 ELSE c.case_pre_sales_count * 15 / cc.case_pre_sales_base END) ELSE 15 END)
+
(CASE WHEN cc.case_implement_base > 0 THEN floor(CASE WHEN c.case_implement_count > cc.case_implement_base THEN 1 * 15 ELSE c.case_implement_count * 15 / cc.case_implement_base END) ELSE 15 END)
) ELSE NULL END as score
FROM "a57be577deb434"."tbl_clients" "c" LEFT JOIN (SELECT
p.client_id,
sum(CASE WHEN p.project_status = 3 THEN p.budget ELSE 0 END) AS status3_budgets,
sum(CASE WHEN p.project_status = 3 THEN p.budget * p.profit_pct / 100 ELSE 0 END) AS status3_profits,
max(CASE WHEN p.project_status = 3 THEN p.bargain_date ELSE NULL END) AS last_bargain_date,
sum(CASE WHEN p.project_status = 3 AND p.budget >= p.collected THEN p.budget - p.collected ELSE 0 END) AS un_collected,
sum(CASE WHEN p.project_status = 3 THEN p.collected ELSE 0 END) AS collected,
count(CASE WHEN p.project_status = 3 THEN p.id ELSE NULL END) as status3_count,
count(distinct CASE WHEN p.project_status = 3 THEN p.used_client ELSE NULL END) as used_clients,
sum(CASE WHEN p.project_status = 1 THEN p.budget ELSE 0 END) AS status1_budgets,
count(CASE WHEN p.project_status = 1 THEN p.id ELSE NULL END) as status1_count,
sum(CASE WHEN p.project_status = 2 THEN p.budget ELSE 0 END) AS status2_budgets,
count(CASE WHEN p.project_status = 2 THEN p.id ELSE NULL END) as status2_count,
sum(CASE WHEN p.project_status IN (1, 2) THEN p.budget ELSE 0 END) AS status12_budgets,
sum(CASE WHEN p.project_status IN (1, 2) THEN p.budget * p.profit_pct / 100 ELSE 0 END) AS status12_profits
FROM "a57be577deb434"."tbl_projects" "p" WHERE "p"."project_status" IN (1, 2, 3) GROUP BY "p"."client_id") "tmp_project_period" ON tmp_project_period.client_id = c.id LEFT JOIN (SELECT
p.client_id,
count(p.id) as project_count,
sum(CASE WHEN p.project_status != 3 THEN p.budget ELSE 0 END) AS other_budgets
FROM "a57be577deb434"."tbl_projects" "p" GROUP BY "p"."client_id") "tmp_project_all" ON tmp_project_all.client_id = c.id LEFT JOIN (SELECT sub4.client_id, count(sub4.id) as pre_sales_counts, sum(sub4.pre_sales_time) as pre_sales_times FROM (SELECT "ps"."id", "ps"."client_id", (ps.end_at - ps.start_at) as pre_sales_time FROM "a57be577deb434"."tbl_pre_sales" "ps" LEFT JOIN "a57be577deb434"."tbl_engineer_group_relationships" "egr" ON egr.engineer_id = ps.created_by WHERE "ps"."is_draft"=FALSE) "sub4" GROUP BY "sub4"."client_id") "tmp4" ON tmp4.client_id = c.id LEFT JOIN (SELECT sub5.client_id, count(sub5.id) as implement_counts, sum(sub5.implement_time) as implement_times FROM (SELECT "ir"."id", "ir"."client_id", (ir.left_at - ir.arrived_at) as implement_time FROM "a57be577deb434"."tbl_implement_records" "ir" LEFT JOIN "a57be577deb434"."tbl_engineer_group_relationships" "egr" ON egr.engineer_id = ir.created_by WHERE "ir"."is_draft"=FALSE) "sub5" GROUP BY "sub5"."client_id") "tmp5" ON tmp5.client_id = c.id LEFT JOIN (SELECT csrr.client_id, csrr.sales_rep, (now() - csrr.start_at) as sales_rep_time FROM "a57be577deb434"."tbl_client_sales_rep_rels" "csrr" WHERE "id" IN (SELECT max(csrrs.id) FROM "a57be577deb434"."tbl_client_sales_rep_rels" "csrrs" WHERE csrrs.end_at is null GROUP BY "csrrs"."client_id")) "tmp6" ON tmp6.client_id = c.id and tmp6.sales_rep = c.sales_rep LEFT JOIN (SELECT
wl.client_id,
count(CASE WHEN wl.location_in_id IS NOT NULL AND wl.location_out_id IS NOT NULL THEN wl.id ELSE NULL END) as work_count,
sum(CASE WHEN wl.location_in_id IS NOT NULL AND wl.location_out_id IS NOT NULL THEN wl.end_at - wl.start_at ELSE '00:00:00'::interval END) as work_time,
count(CASE WHEN wl.scenario_id = 1 THEN wl.id ELSE NULL END) as work1_count,
sum(CASE WHEN wl.scenario_id = 1 THEN wl.end_at - wl.start_at ELSE '00:00:00'::interval END) as work1_time,
count(CASE WHEN wl.scenario_id = 2 THEN wl.id ELSE NULL END) as work2_count,
sum(CASE WHEN wl.scenario_id = 2 THEN wl.end_at - wl.start_at ELSE '00:00:00'::interval END) as work2_time,
count(CASE WHEN wl.scenario_id = 3 THEN wl.id ELSE NULL END) as work3_count,
sum(CASE WHEN wl.scenario_id = 3 THEN wl.end_at - wl.start_at ELSE '00:00:00'::interval END) as work3_time,
count(CASE WHEN wl.scenario_id = 4 THEN wl.id ELSE NULL END) as work4_count,
sum(CASE WHEN wl.scenario_id = 4 THEN wl.end_at - wl.start_at ELSE '00:00:00'::interval END) as work4_time,
count(CASE WHEN wl.scenario_id = 5 THEN wl.id ELSE NULL END) as work5_count,
sum(CASE WHEN wl.scenario_id = 5 THEN wl.end_at - wl.start_at ELSE '00:00:00'::interval END) as work5_time
FROM "a57be577deb434"."tbl_work_logs" "wl" WHERE ("wl"."is_draft"=FALSE) AND ("wl"."client_id" IS NOT NULL) GROUP BY "wl"."client_id") "tmp_work" ON tmp_work.client_id = c.id LEFT JOIN (SELECT sub8.client_id, sum(sub8.reimbursement_amount) as reimbursement_amount FROM (SELECT "r"."client_id", "r"."amount" AS "reimbursement_amount" FROM "a57be577deb434"."tbl_reimbursements" "r" WHERE "r"."status" IN (2, 3)) "sub8" GROUP BY "sub8"."client_id") "tmp8" ON tmp8.client_id = c.id LEFT JOIN (SELECT sub9.client_id, sum(sub9.points) as points FROM (SELECT c.client_id, COALESCE(sum(ca.points),0) as points FROM "a57be577deb434"."tbl_cases" "c" LEFT JOIN "a57be577deb434"."tbl_case_assignments" "ca" ON ca.case_id = c.id LEFT JOIN "a57be577deb434"."tbl_engineer_group_relationships" "egr" ON egr.engineer_id = ca.engineer_id GROUP BY "c"."id") "sub9" GROUP BY "sub9"."client_id") "tmp9" ON tmp9.client_id = c.id LEFT JOIN (SELECT
sub10.client_id,
sum(sub10.invoices) as invoices,
sum(case when sub10.amount >= sub10.invoices and sub10.including_tax = true THEN sub10.amount - sub10.invoices ELSE 0 END) AS un_invoices
FROM (SELECT sc.client_id, sc.including_tax, sc.amount, COALESCE(SUM(sci.amount ),0) AS invoices FROM "a57be577deb434"."tbl_sales_contracts" "sc" LEFT JOIN "a57be577deb434"."tbl_sales_contract_invoices" "sci" ON sci.contract_id = sc.id GROUP BY "sc"."id") "sub10" GROUP BY "sub10"."client_id") "tmp10" ON tmp10.client_id = c.id LEFT JOIN "a57be577deb434"."tbl_client_classes" "cc" ON "cc"."id" = "c"."client_class" LEFT JOIN "a57be577deb434"."tbl_client_industries" "ci" ON "ci"."id" = "c"."client_industry" LEFT JOIN "a57be577deb434"."tbl_client_types" "ct" ON "ct"."id" = "c"."client_type" WHERE (("c"."sales_rep" IN (1001, 5049, 5301, 5022, 5209, 5026, 5293, 5309, 5356, 5329, 5299, 5303, 5302, 5332, 5047, 1026, 5096, 5070, 5448, 5420, 1029, 5037, 5087, 1008, 5048, 5043, 5045, 5230, 5031, 5088, 5208, 1003, 5467, 5294, 5357, 5044, 1030, 5076, 5300, 5027, 5089, 5311, 5066, 5069, 5364, 1009, 5295, 1013, 5128, 5203, 1025, 5032, 5075, 5476, 1004, 5072, 5033, 5359, 5412, 5409, 5229, 1005, 5304, 5449, 5358, 1006, 5093)) OR ("c"."sales_rep" IS NULL) OR ("c"."id" IN (SELECT "client_id" FROM "a57be577deb434"."tbl_user_visit_clients" WHERE "user_id"=1001))) AND ("c"."deleted"=FALSE) AND ((lower(c.name) LIKE '%啊%') OR ("c"."pinyin_shortcut" LIKE '%啊%'))) "final" ORDER BY "status3_budgets" DESC, "created_at" DESC) "c" |
| 16:50:35.573 | info | yii\db\Command::query | SELECT
final.id,
final.name,
final.sales_rep,
final.status3_budgets,
final.status3_profits,
final.status3_count,
final.status3_pct,
final.status1_budgets,
final.status1_count,
final.status2_budgets,
final.status2_count,
final.pscount,
final.ircount,
(final.pstime + final.irtime) AS service_time,
(final.pscount + final.ircount) AS service_count,
(now() - final.created_at) AS sales_rep_time,
final.created_at,
final.work_time,
final.work_count,
final.last_bargain_date,
final.reimbursement_amount,
final.points,
CASE WHEN final.cooperated IS NULL THEN false ELSE true END AS cooperated,
final.client_industry,
final.client_industry_id,
final.client_type,
final.client_type_id,
final.score,
final.collected,
final.un_collected,
final.invoices,
final.un_invoices,
final.project_count,
final.other_budgets,
final.used_clients,
final.status12_budgets,
final.status12_profits,
final.work1_time,
final.work1_count,
final.work2_time,
final.work2_count,
final.work3_time,
final.work3_count,
final.work4_time,
final.work4_count,
final.work5_time,
final.work5_count
FROM (SELECT
c.id,
c.name,
c.sales_rep,
c.created_at,
CASE WHEN tmp_project_period.status3_budgets IS NULL THEN 0 ELSE tmp_project_period.status3_budgets END AS status3_budgets,
CASE WHEN tmp_project_period.status3_profits IS NULL THEN 0 ELSE tmp_project_period.status3_profits END AS status3_profits,
CASE WHEN tmp_project_period.status3_budgets IS NULL OR tmp_project_period.status3_budgets = 0 THEN 0 ELSE tmp_project_period.status3_profits / tmp_project_period.status3_budgets END AS status3_pct,
CASE WHEN tmp_project_period.status3_count IS NULL THEN 0 ELSE tmp_project_period.status3_count END AS status3_count,
CASE WHEN tmp_project_period.collected IS NULL THEN 0 ELSE tmp_project_period.collected END AS collected,
CASE WHEN tmp_project_period.used_clients IS NULL THEN 0 ELSE tmp_project_period.used_clients END AS used_clients,
CASE WHEN tmp_project_period.un_collected IS NULL THEN 0 ELSE tmp_project_period.un_collected END AS un_collected,
CASE WHEN tmp_project_period.status1_budgets IS NULL THEN 0 ELSE tmp_project_period.status1_budgets END AS status1_budgets,
CASE WHEN tmp_project_period.status1_count IS NULL THEN 0 ELSE tmp_project_period.status1_count END AS status1_count,
CASE WHEN tmp_project_period.status2_budgets IS NULL THEN 0 ELSE tmp_project_period.status2_budgets END AS status2_budgets,
CASE WHEN tmp_project_period.status2_count IS NULL THEN 0 ELSE tmp_project_period.status2_count END AS status2_count,
CASE WHEN tmp4.pre_sales_counts IS NULL THEN 0 ELSE tmp4.pre_sales_counts END AS pscount,
CASE WHEN tmp5.implement_counts IS NULL THEN 0 ELSE tmp5.implement_counts END AS ircount,
CASE WHEN tmp4.pre_sales_times IS NOT NULL THEN EXTRACT(EPOCH FROM tmp4.pre_sales_times)/3600 ELSE 0 END AS pstime,
CASE WHEN tmp5.implement_times IS NOT NULL THEN EXTRACT(EPOCH FROM tmp5.implement_times)/3600 ELSE 0 END AS irtime,
CASE WHEN tmp6.sales_rep_time IS NOT NULL THEN EXTRACT(EPOCH FROM tmp6.sales_rep_time )/3600 ELSE 0 END AS sales_rep_time,
CASE WHEN tmp_work.work_time IS NOT NULL THEN tmp_work.work_time ELSE '00:00:00'::interval END AS work_time,
CASE WHEN tmp_work.work_count IS NOT NULL THEN tmp_work.work_count ELSE 0 END AS work_count,
CASE WHEN tmp8.reimbursement_amount IS NOT NULL THEN tmp8.reimbursement_amount ELSE 0 END AS reimbursement_amount,
tmp_project_period.last_bargain_date,
CASE WHEN tmp9.points IS NOT NULL THEN tmp9.points ELSE 0 END AS points,
CASE WHEN tmp10.invoices IS NULL THEN 0 ELSE tmp10.invoices END AS invoices,
CASE WHEN tmp10.un_invoices IS NULL THEN 0 ELSE tmp10.un_invoices END AS un_invoices,
CASE WHEN tmp_project_period.status3_count IS NULL OR tmp_project_period.status3_count = 0 THEN NULL ELSE tmp_project_period.status3_count END AS cooperated,
ci.name as client_industry,
ci.id as client_industry_id,
ct.name as client_type,
ct.id as client_type_id,
CASE WHEN tmp_project_all.project_count IS NULL THEN 0 ELSE tmp_project_all.project_count END AS project_count,
CASE WHEN tmp_project_all.other_budgets IS NULL THEN 0 ELSE tmp_project_all.other_budgets END AS other_budgets,
CASE WHEN tmp_project_period.status12_budgets IS NULL THEN 0 ELSE tmp_project_period.status12_budgets END AS status12_budgets,
CASE WHEN tmp_project_period.status12_profits IS NULL THEN 0 ELSE tmp_project_period.status12_profits END AS status12_profits,
CASE WHEN tmp_work.work1_time IS NOT NULL THEN tmp_work.work1_time ELSE '00:00:00'::interval END AS work1_time,
CASE WHEN tmp_work.work1_count IS NOT NULL THEN tmp_work.work1_count ELSE 0 END AS work1_count,
CASE WHEN tmp_work.work2_time IS NOT NULL THEN tmp_work.work2_time ELSE '00:00:00'::interval END AS work2_time,
CASE WHEN tmp_work.work2_count IS NOT NULL THEN tmp_work.work2_count ELSE 0 END AS work2_count,
CASE WHEN tmp_work.work3_time IS NOT NULL THEN tmp_work.work3_time ELSE '00:00:00'::interval END AS work3_time,
CASE WHEN tmp_work.work3_count IS NOT NULL THEN tmp_work.work3_count ELSE 0 END AS work3_count,
CASE WHEN tmp_work.work4_time IS NOT NULL THEN tmp_work.work4_time ELSE '00:00:00'::interval END AS work4_time,
CASE WHEN tmp_work.work4_count IS NOT NULL THEN tmp_work.work4_count ELSE 0 END AS work4_count,
CASE WHEN tmp_work.work5_time IS NOT NULL THEN tmp_work.work5_time ELSE '00:00:00'::interval END AS work5_time,
CASE WHEN tmp_work.work5_count IS NOT NULL THEN tmp_work.work5_count ELSE 0 END AS work5_count,
CASE WHEN c.client_class IS NOT NULL THEN (
(CASE WHEN cc.contact_base > 0 THEN floor(CASE WHEN c.contact_count > cc.contact_base THEN 1 * 15 ELSE c.contact_count * 15 / cc.contact_base END) ELSE 15 END)
+
floor(c.client_base_info_count * 15 / 9)
+
(CASE WHEN cc.visit_base > 0 THEN floor(CASE WHEN c.visit_count > ceil((CASE WHEN extract(year from now()) = extract(year from c.created_at::date) THEN (now()::date - c.created_at::date + 1)::float ELSE 154::float END) / cc.visit_base::float) THEN 1 * 20 ELSE c.visit_count * 20 / ceil((CASE WHEN extract(year from now()) = extract(year from c.created_at::date) THEN (now()::date - c.created_at::date + 1)::float ELSE 154::float END) / cc.visit_base::float) END) ELSE 20 END)
+
(CASE WHEN cc.cooperate_base > 0 THEN floor(CASE WHEN c.cooperate_count > cc.cooperate_base THEN 1 * 20 ELSE c.cooperate_count * 20 / cc.cooperate_base END) ELSE 20 END)
+
(CASE WHEN cc.case_pre_sales_base > 0 THEN floor(CASE WHEN c.case_pre_sales_count > cc.case_pre_sales_base THEN 1 * 15 ELSE c.case_pre_sales_count * 15 / cc.case_pre_sales_base END) ELSE 15 END)
+
(CASE WHEN cc.case_implement_base > 0 THEN floor(CASE WHEN c.case_implement_count > cc.case_implement_base THEN 1 * 15 ELSE c.case_implement_count * 15 / cc.case_implement_base END) ELSE 15 END)
) ELSE NULL END as score
FROM "a57be577deb434"."tbl_clients" "c" LEFT JOIN (SELECT
p.client_id,
sum(CASE WHEN p.project_status = 3 THEN p.budget ELSE 0 END) AS status3_budgets,
sum(CASE WHEN p.project_status = 3 THEN p.budget * p.profit_pct / 100 ELSE 0 END) AS status3_profits,
max(CASE WHEN p.project_status = 3 THEN p.bargain_date ELSE NULL END) AS last_bargain_date,
sum(CASE WHEN p.project_status = 3 AND p.budget >= p.collected THEN p.budget - p.collected ELSE 0 END) AS un_collected,
sum(CASE WHEN p.project_status = 3 THEN p.collected ELSE 0 END) AS collected,
count(CASE WHEN p.project_status = 3 THEN p.id ELSE NULL END) as status3_count,
count(distinct CASE WHEN p.project_status = 3 THEN p.used_client ELSE NULL END) as used_clients,
sum(CASE WHEN p.project_status = 1 THEN p.budget ELSE 0 END) AS status1_budgets,
count(CASE WHEN p.project_status = 1 THEN p.id ELSE NULL END) as status1_count,
sum(CASE WHEN p.project_status = 2 THEN p.budget ELSE 0 END) AS status2_budgets,
count(CASE WHEN p.project_status = 2 THEN p.id ELSE NULL END) as status2_count,
sum(CASE WHEN p.project_status IN (1, 2) THEN p.budget ELSE 0 END) AS status12_budgets,
sum(CASE WHEN p.project_status IN (1, 2) THEN p.budget * p.profit_pct / 100 ELSE 0 END) AS status12_profits
FROM "a57be577deb434"."tbl_projects" "p" WHERE "p"."project_status" IN (1, 2, 3) GROUP BY "p"."client_id") "tmp_project_period" ON tmp_project_period.client_id = c.id LEFT JOIN (SELECT
p.client_id,
count(p.id) as project_count,
sum(CASE WHEN p.project_status != 3 THEN p.budget ELSE 0 END) AS other_budgets
FROM "a57be577deb434"."tbl_projects" "p" GROUP BY "p"."client_id") "tmp_project_all" ON tmp_project_all.client_id = c.id LEFT JOIN (SELECT sub4.client_id, count(sub4.id) as pre_sales_counts, sum(sub4.pre_sales_time) as pre_sales_times FROM (SELECT "ps"."id", "ps"."client_id", (ps.end_at - ps.start_at) as pre_sales_time FROM "a57be577deb434"."tbl_pre_sales" "ps" LEFT JOIN "a57be577deb434"."tbl_engineer_group_relationships" "egr" ON egr.engineer_id = ps.created_by WHERE "ps"."is_draft"=FALSE) "sub4" GROUP BY "sub4"."client_id") "tmp4" ON tmp4.client_id = c.id LEFT JOIN (SELECT sub5.client_id, count(sub5.id) as implement_counts, sum(sub5.implement_time) as implement_times FROM (SELECT "ir"."id", "ir"."client_id", (ir.left_at - ir.arrived_at) as implement_time FROM "a57be577deb434"."tbl_implement_records" "ir" LEFT JOIN "a57be577deb434"."tbl_engineer_group_relationships" "egr" ON egr.engineer_id = ir.created_by WHERE "ir"."is_draft"=FALSE) "sub5" GROUP BY "sub5"."client_id") "tmp5" ON tmp5.client_id = c.id LEFT JOIN (SELECT csrr.client_id, csrr.sales_rep, (now() - csrr.start_at) as sales_rep_time FROM "a57be577deb434"."tbl_client_sales_rep_rels" "csrr" WHERE "id" IN (SELECT max(csrrs.id) FROM "a57be577deb434"."tbl_client_sales_rep_rels" "csrrs" WHERE csrrs.end_at is null GROUP BY "csrrs"."client_id")) "tmp6" ON tmp6.client_id = c.id and tmp6.sales_rep = c.sales_rep LEFT JOIN (SELECT
wl.client_id,
count(CASE WHEN wl.location_in_id IS NOT NULL AND wl.location_out_id IS NOT NULL THEN wl.id ELSE NULL END) as work_count,
sum(CASE WHEN wl.location_in_id IS NOT NULL AND wl.location_out_id IS NOT NULL THEN wl.end_at - wl.start_at ELSE '00:00:00'::interval END) as work_time,
count(CASE WHEN wl.scenario_id = 1 THEN wl.id ELSE NULL END) as work1_count,
sum(CASE WHEN wl.scenario_id = 1 THEN wl.end_at - wl.start_at ELSE '00:00:00'::interval END) as work1_time,
count(CASE WHEN wl.scenario_id = 2 THEN wl.id ELSE NULL END) as work2_count,
sum(CASE WHEN wl.scenario_id = 2 THEN wl.end_at - wl.start_at ELSE '00:00:00'::interval END) as work2_time,
count(CASE WHEN wl.scenario_id = 3 THEN wl.id ELSE NULL END) as work3_count,
sum(CASE WHEN wl.scenario_id = 3 THEN wl.end_at - wl.start_at ELSE '00:00:00'::interval END) as work3_time,
count(CASE WHEN wl.scenario_id = 4 THEN wl.id ELSE NULL END) as work4_count,
sum(CASE WHEN wl.scenario_id = 4 THEN wl.end_at - wl.start_at ELSE '00:00:00'::interval END) as work4_time,
count(CASE WHEN wl.scenario_id = 5 THEN wl.id ELSE NULL END) as work5_count,
sum(CASE WHEN wl.scenario_id = 5 THEN wl.end_at - wl.start_at ELSE '00:00:00'::interval END) as work5_time
FROM "a57be577deb434"."tbl_work_logs" "wl" WHERE ("wl"."is_draft"=FALSE) AND ("wl"."client_id" IS NOT NULL) GROUP BY "wl"."client_id") "tmp_work" ON tmp_work.client_id = c.id LEFT JOIN (SELECT sub8.client_id, sum(sub8.reimbursement_amount) as reimbursement_amount FROM (SELECT "r"."client_id", "r"."amount" AS "reimbursement_amount" FROM "a57be577deb434"."tbl_reimbursements" "r" WHERE "r"."status" IN (2, 3)) "sub8" GROUP BY "sub8"."client_id") "tmp8" ON tmp8.client_id = c.id LEFT JOIN (SELECT sub9.client_id, sum(sub9.points) as points FROM (SELECT c.client_id, COALESCE(sum(ca.points),0) as points FROM "a57be577deb434"."tbl_cases" "c" LEFT JOIN "a57be577deb434"."tbl_case_assignments" "ca" ON ca.case_id = c.id LEFT JOIN "a57be577deb434"."tbl_engineer_group_relationships" "egr" ON egr.engineer_id = ca.engineer_id GROUP BY "c"."id") "sub9" GROUP BY "sub9"."client_id") "tmp9" ON tmp9.client_id = c.id LEFT JOIN (SELECT
sub10.client_id,
sum(sub10.invoices) as invoices,
sum(case when sub10.amount >= sub10.invoices and sub10.including_tax = true THEN sub10.amount - sub10.invoices ELSE 0 END) AS un_invoices
FROM (SELECT sc.client_id, sc.including_tax, sc.amount, COALESCE(SUM(sci.amount ),0) AS invoices FROM "a57be577deb434"."tbl_sales_contracts" "sc" LEFT JOIN "a57be577deb434"."tbl_sales_contract_invoices" "sci" ON sci.contract_id = sc.id GROUP BY "sc"."id") "sub10" GROUP BY "sub10"."client_id") "tmp10" ON tmp10.client_id = c.id LEFT JOIN "a57be577deb434"."tbl_client_classes" "cc" ON "cc"."id" = "c"."client_class" LEFT JOIN "a57be577deb434"."tbl_client_industries" "ci" ON "ci"."id" = "c"."client_industry" LEFT JOIN "a57be577deb434"."tbl_client_types" "ct" ON "ct"."id" = "c"."client_type" WHERE (("c"."sales_rep" IN (1001, 5049, 5301, 5022, 5209, 5026, 5293, 5309, 5356, 5329, 5299, 5303, 5302, 5332, 5047, 1026, 5096, 5070, 5448, 5420, 1029, 5037, 5087, 1008, 5048, 5043, 5045, 5230, 5031, 5088, 5208, 1003, 5467, 5294, 5357, 5044, 1030, 5076, 5300, 5027, 5089, 5311, 5066, 5069, 5364, 1009, 5295, 1013, 5128, 5203, 1025, 5032, 5075, 5476, 1004, 5072, 5033, 5359, 5412, 5409, 5229, 1005, 5304, 5449, 5358, 1006, 5093)) OR ("c"."sales_rep" IS NULL) OR ("c"."id" IN (SELECT "client_id" FROM "a57be577deb434"."tbl_user_visit_clients" WHERE "user_id"=1001))) AND ("c"."deleted"=FALSE) AND ((lower(c.name) LIKE '%啊%') OR ("c"."pinyin_shortcut" LIKE '%啊%'))) "final" ORDER BY "status3_budgets" DESC, "created_at" DESC LIMIT 20 |
| 16:50:35.585 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 16:50:35.585 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: MGET |
| 16:50:35.585 | info | yii\db\Command::query | INSERT INTO "global"."tbl_api_log" ("code", "schema", "user_id", "device_type", "url", "request", "response", "php_error", "time", "duration") VALUES (200, 'a57be577deb434', 1001, 5, 'vue/analysis/clients', '{"keyword":"\u554a","sales_rep":"","group":"","dataUserId":"1001","page":"1","engineer_group":"","engineer":"","period":"","cooperated":"","client_industry_id":"","client_type_id":"","GroupId":"","web_access_token":"3sqoTbqwkHhRmqiLIelKWucsK6N07HRT"}', '{"code":2000,"result":{"list":[],"pagenation":{"totalcount":0,"thispage":1,"pagesize":20}},"status":1,"msg":[{"name":"success","success":"\u6210\u529f\u83b7\u53d6\u6570\u636e","error":""}],"mod":0,"ip":"221.216.117.119","ua":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/148.0.0.0 Safari\/537.36"}', FALSE, '2026-06-03 16:50:35', 25985792) RETURNING "id" |
| 16:50:35.586 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 16:50:35.586 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: SET |