| 10:15:22.535 | trace | yii\base\Application::bootstrap | Bootstrap with yii\log\Dispatcher |
| 10:15:22.535 | trace | yii\base\Module::getModule | Loading module: debug |
| 10:15:22.535 | trace | yii\base\Application::bootstrap | Bootstrap with yii\debug\Module::bootstrap() |
| 10:15:22.536 | trace | yii\redis\Connection::open | Opening redis DB connection: redis.server.local:6379, database=1 |
| 10:15:22.536 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: SELECT |
| 10:15:22.536 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 10:15:22.537 | info | time tracing start | 1781230522537203200 |
| 10:15:22.537 | trace | yii\web\UrlManager::parseRequest | No matching URL rules. Using default URL parsing logic. |
| 10:15:22.537 | trace | yii\web\Application::handleRequest | Route requested: 'vue/erp-analysis/sales-product-project-list' |
| 10:15:22.537 | trace | yii\base\Module::getModule | Loading module: vue |
| 10:15:22.539 | info | yii\web\Session::open | Session started |
| 10:15:22.540 | info | yii\db\Command::query | SELECT * FROM "global"."vw_user_login" WHERE "id"=1001 |
| 10:15:22.540 | info | yii\db\Connection::open | Opening DB connection: pgsql:host=postgresql.server.local;port=5432;dbname=beta |
| 10:15:22.541 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 10:15:22.542 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: MGET |
| 10:15:22.542 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 10:15:22.543 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: MGET |
| 10:15:22.543 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_users" WHERE "id"=1001 |
| 10:15:22.544 | trace | yii\base\Controller::runAction | Route to run: vue/erp-analysis/sales-product-project-list |
| 10:15:22.544 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 10:15:22.546 | trace | uranus\rbac\DbManager::checkAccessFromCache | Checking role: Admin |
| 10:15:22.546 | trace | yii\base\InlineAction::runWithParams | Running action: app\modules\vue\controllers\ErpAnalysisController::actionSalesProductProjectList() |
| 10:15:22.546 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 10:15:22.547 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 10:15:22.549 | info | yii\db\Command::query | SELECT COUNT(*) FROM (SELECT
COALESCE(sum(eipss.actual_total_amount), 0) as total_cost,
avg(eipss.actual_amount) as cost,
esosps.id,
esosps.erp_sales_outbound_id,
esosps.product_id,
esosps.amount - COALESCE(esosps.cancel_amount, 0) as amount,
esosps.number - COALESCE(esosps.cancel_number, 0) as number,
esosps.total_amount - COALESCE(esosps.cancel_total_amount, 0) as total_amount,
project.bargain_date,
(sum(eipss.total_amount) - sum(eipss.actual_total_amount)) as total_profit,
CASE WHEN sum(eipss.total_amount) > 0 THEN (sum(eipss.total_amount) - sum(eipss.actual_total_amount)) / sum(eipss.total_amount) * 100 ELSE null END as profit_pct
FROM "a57be577deb434"."tbl_erp_sales_outbound_spent_products" "esosps" LEFT JOIN "a57be577deb434"."tbl_erp_sales_outbounds" "t" ON esosps.erp_sales_outbound_id = t.id LEFT JOIN "a57be577deb434"."tbl_projects" "project" ON project.id = t.project_id LEFT JOIN "a57be577deb434"."tbl_products" "p" ON esosps.product_id = p.id LEFT JOIN "a57be577deb434"."tbl_erp_inventory_product_spents" "eipss" ON eipss.erp_sales_outbound_spent_product_id = esosps.id WHERE ("t"."status"=2) AND ("project"."created_by" 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)) AND ("p"."id"='2237') AND (eipss.outbound > 0) AND ("project"."bargain_date" >= '2026-01-01 00:00:00') AND ("project"."bargain_date" <= '2026-12-31 23:59:59') AND (((project.budget > project.collected) AND ("project"."project_status" IN ('3', '-1'))) OR ((project.budget <= project.collected) AND ("project"."project_status"=3))) GROUP BY "esosps"."id", "project"."id" ORDER BY "bargain_date" DESC) "c" |
| 10:15:22.552 | info | yii\db\Command::query | SELECT
COALESCE(sum(eipss.actual_total_amount), 0) as total_cost,
avg(eipss.actual_amount) as cost,
esosps.id,
esosps.erp_sales_outbound_id,
esosps.product_id,
esosps.amount - COALESCE(esosps.cancel_amount, 0) as amount,
esosps.number - COALESCE(esosps.cancel_number, 0) as number,
esosps.total_amount - COALESCE(esosps.cancel_total_amount, 0) as total_amount,
project.bargain_date,
(sum(eipss.total_amount) - sum(eipss.actual_total_amount)) as total_profit,
CASE WHEN sum(eipss.total_amount) > 0 THEN (sum(eipss.total_amount) - sum(eipss.actual_total_amount)) / sum(eipss.total_amount) * 100 ELSE null END as profit_pct
FROM "a57be577deb434"."tbl_erp_sales_outbound_spent_products" "esosps" LEFT JOIN "a57be577deb434"."tbl_erp_sales_outbounds" "t" ON esosps.erp_sales_outbound_id = t.id LEFT JOIN "a57be577deb434"."tbl_projects" "project" ON project.id = t.project_id LEFT JOIN "a57be577deb434"."tbl_products" "p" ON esosps.product_id = p.id LEFT JOIN "a57be577deb434"."tbl_erp_inventory_product_spents" "eipss" ON eipss.erp_sales_outbound_spent_product_id = esosps.id WHERE ("t"."status"=2) AND ("project"."created_by" 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)) AND ("p"."id"='2237') AND (eipss.outbound > 0) AND ("project"."bargain_date" >= '2026-01-01 00:00:00') AND ("project"."bargain_date" <= '2026-12-31 23:59:59') AND (((project.budget > project.collected) AND ("project"."project_status" IN ('3', '-1'))) OR ((project.budget <= project.collected) AND ("project"."project_status"=3))) GROUP BY "esosps"."id", "project"."id" ORDER BY "bargain_date" DESC LIMIT 20 |
| 10:15:22.554 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 10:15:22.554 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: MGET |
| 10:15:22.555 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_products" WHERE "id"=2237 |
| 10:15:22.555 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name" FROM "a57be577deb434"."tbl_product_units" WHERE "id"=1 |
| 10:15:22.556 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_erp_sales_outbounds" WHERE "id"=133 |
| 10:15:22.556 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_projects" WHERE "id"=4116 |
| 10:15:22.558 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name", "logo", "client_type", "client_class", "client_industry", "sales_rep" FROM "a57be577deb434"."tbl_clients" WHERE "id"=3438 |
| 10:15:22.558 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "project_status" AS "name", "color" FROM "a57be577deb434"."tbl_project_statuses" WHERE "id"=3 |
| 10:15:22.559 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name", "sex", "department_id" FROM "a57be577deb434"."tbl_users" WHERE "id"=1005 |
| 10:15:22.560 | info | yii\db\Command::query | SELECT "id", "user_id", "meta_value" AS "name" FROM "a57be577deb434"."tbl_user_meta" WHERE ("meta_key"='avatar') AND ("user_id"=1005) |
| 10:15:22.560 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_sales_group_relationships" WHERE "sales_id"=1005 |
| 10:15:22.561 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name" FROM "a57be577deb434"."tbl_groups" WHERE "id"=80 |
| 10:15:22.561 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name" FROM "a57be577deb434"."tbl_departments" WHERE "id"=1 |
| 10:15:22.562 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name", "sex", "department_id" FROM "a57be577deb434"."tbl_users" WHERE "id"=1005 |
| 10:15:22.562 | info | yii\db\Command::query | SELECT "id", "user_id", "meta_value" AS "name" FROM "a57be577deb434"."tbl_user_meta" WHERE ("meta_key"='avatar') AND ("user_id"=1005) |
| 10:15:22.563 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_clients" WHERE "id"=3438 |
| 10:15:22.563 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name", "sex" FROM "a57be577deb434"."tbl_users" WHERE "id"=1005 |
| 10:15:22.564 | info | yii\db\Command::query | SELECT "id", "user_id", "meta_value" AS "name" FROM "a57be577deb434"."tbl_user_meta" WHERE ("meta_key"='avatar') AND ("user_id"=1005) |
| 10:15:22.564 | info | yii\db\Command::query | SELECT * FROM "a57be577deb434"."tbl_sales_group_relationships" WHERE "sales_id"=1005 |
| 10:15:22.565 | info | yii\db\Command::query | SELECT "id", "id" AS "key", "name" FROM "a57be577deb434"."tbl_groups" WHERE "id"=80 |
| 10:15:22.565 | info | yii\db\Command::query | SELECT "id", "from_project", "serial_no" FROM "a57be577deb434"."tbl_sales_contracts" WHERE "from_project"=4116 |
| 10:15:22.567 | info | yii\db\Command::query | SELECT
sum(total_amount) as total_amount,
sum(total_profit) as total_profit,
CASE WHEN sum(total_amount) > 0 THEN sum(total_profit) / sum(total_amount) * 100 ELSE NULL END as profit_pct FROM (SELECT
COALESCE(sum(eipss.actual_total_amount), 0) as total_cost,
avg(eipss.actual_amount) as cost,
esosps.id,
esosps.erp_sales_outbound_id,
esosps.product_id,
esosps.amount - COALESCE(esosps.cancel_amount, 0) as amount,
esosps.number - COALESCE(esosps.cancel_number, 0) as number,
esosps.total_amount - COALESCE(esosps.cancel_total_amount, 0) as total_amount,
project.bargain_date,
(sum(eipss.total_amount) - sum(eipss.actual_total_amount)) as total_profit,
CASE WHEN sum(eipss.total_amount) > 0 THEN (sum(eipss.total_amount) - sum(eipss.actual_total_amount)) / sum(eipss.total_amount) * 100 ELSE null END as profit_pct
FROM "a57be577deb434"."tbl_erp_sales_outbound_spent_products" "esosps" LEFT JOIN "a57be577deb434"."tbl_erp_sales_outbounds" "t" ON esosps.erp_sales_outbound_id = t.id LEFT JOIN "a57be577deb434"."tbl_projects" "project" ON project.id = t.project_id LEFT JOIN "a57be577deb434"."tbl_products" "p" ON esosps.product_id = p.id LEFT JOIN "a57be577deb434"."tbl_erp_inventory_product_spents" "eipss" ON eipss.erp_sales_outbound_spent_product_id = esosps.id WHERE ("t"."status"=2) AND ("project"."created_by" 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)) AND ("p"."id"='2237') AND (eipss.outbound > 0) AND ("project"."bargain_date" >= '2026-01-01 00:00:00') AND ("project"."bargain_date" <= '2026-12-31 23:59:59') AND (((project.budget > project.collected) AND ("project"."project_status" IN ('3', '-1'))) OR ((project.budget <= project.collected) AND ("project"."project_status"=3))) GROUP BY "esosps"."id", "project"."id") "sub" |
| 10:15:22.569 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 10:15:22.570 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: MGET |
| 10:15:22.570 | 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/erp-analysis/sales-product-project-list', '{"produect":"product_name","series":"seriesBudget","project_status":["3","-1"],"period":"currentfascalyear","product_id":"2237","page":"1","web_access_token":"s1xKbg9e3rlah-dvFsDEWCxiJPk9VpSm"}', '{"code":2000,"result":{"list":[{"total_cost":"1183504","cost":"591752.000000000000","id":493,"erp_sales_outbound_id":133,"product_id":2237,"amount":"610054","number":"2","total_amount":"1220108","bargain_date":"2026-01-27","total_profit":"36604","profit_pct":"3.00006228956780875100","product":{"id":2237,"name":"ZB-W8G40PXL","product_type":2,"product_component":226,"product_brand":276,"product_serie":1764,"product_misc":"","product_qa":"","pn":"","description":"","created_by":1013,"created_at":"2026-01-28 16:22:23","updated_at":"2026-02-03 16:33:41","pinyin_shortcut":"ZBW8G40PXL","product_unit":1,"is_renew":false,"in_out_at":"2026-02-03 16:33:41.58466+08","productUnit":{"id":1,"key":1,"name":"\u53f0"}},"erpSalesOutbound":{"id":133,"serial_no":"XSCKD-20260203-00001","from_date":"","wrote_date":"2026-02-03","handler":1005,"erp_sales_order_id":1679,"client_id":3438,"project_id":4116,"erp_store_id":1,"status":2,"erp_send_type_id":1,"abstract":"\u5229\u6da6\u7387\uff1a0.61%\uff1b\u6536\u8d27\u4eba\uff1a\u8d75\u4e91\u98de","description":"\u987a\u4e30\u5feb\u9012\uff1aSF1532975839086","verify_type":2,"next_verify_user":"","next_stop_verify_user":"","verify_at":"2026-02-03 16:33:41","stop_at":"","refuse_description":"","is_resubmitted":false,"number":"8","amount":"3837034","created_by":1011,"stop_description":"","outbound_status":false,"is_settle":false,"is_used":false,"created_at":"2026-02-03 11:35:33","updated_at":"2026-02-03 16:33:41","print_times":1,"is_sales_order_ready":true,"project":{"id":4116,"client_id":3438,"project_status":3,"project_progress":6,"budget":"3837034","profit_pct":"0.61","bargain_date":"2026-01-27","description":"","created_by":1005,"created_at":"2026-01-27 17:20:18","updated_at":"2026-02-06 17:15:32","engineer_id":"","project_title":"\u4e2d\u535a\u6570\u667a\u6db2\u51b7\u5de5\u4f5c\u7ad9-\u4e2d\u77f3\u5316","collected":"0","status_updated_at":"2026-01-27 17:22:47.009829+08","success_rate":"","comment":"","contract_type":1,"progress_updated_at":"2026-01-27 17:20:18.438458+08","forecast_updated_at":"2026-01-27 17:20:18.438458+08","end_at":"","pinyin_shortcut":"zbszylgzzzsh","creator":1005,"used_client":"","from_contact":"","total_contact_point":"","paid_contact_point":"","project_product_version_id":1318,"is_sales_order_ready":true,"collected_plan":"3837034","change_status_to":"","is_verify":false,"client":{"id":3438,"key":3438,"name":"\u5927\u8fde\u665f\u4e30\u539f\u4fe1\u606f\u54a8\u8be2\u6709\u9650\u516c\u53f8\uff08\u8fc7\u5355\uff09","logo":"","client_type":5,"client_class":43,"client_industry":12,"sales_rep":1005},"usedClient":"","projectStatus":{"id":3,"key":3,"name":"\u5546\u673a\u6210\u4ea4","color":"#53cd02"},"createdBy":{"id":1005,"key":1005,"name":"\u8d75\u660e\uff08\u9500\u552e\u4eba\u5458\uff09","sex":"F","department_id":1,"avatar":{"id":16,"user_id":1005,"name":"\/files\/cdn\/a57be577deb434\/avatar\/56876dde-37eb-39fc-853a-47eaef6510e5.png"},"salesGroup":{"id":80,"key":80,"name":"\u5408\u4f19\u4eba"},"department":{"id":1,"key":1,"name":"\u9500\u552e\u90e8"}},"projectCreator":{"id":1005,"key":1005,"name":"\u8d75\u660e\uff08\u9500\u552e\u4eba\u5458\uff09","sex":"F","department_id":1,"avatar":{"id":16,"user_id":1005,"name":"\/files\/cdn\/a57be577deb434\/avatar\/56876dde-37eb-39fc-853a-47eaef6510e5.png"}},"salesRep":{"id":1005,"key":1005,"name":"\u8d75\u660e\uff08\u9500\u552e\u4eba\u5458\uff09","sex":"F","avatar":{"id":16,"user_id":1005,"name":"\/files\/cdn\/a57be577deb434\/avatar\/56876dde-37eb-39fc-853a-47eaef6510e5.png"},"salesGroup":{"id":80,"key":80,"name":"\u5408\u4f19\u4eba"}},"buildContract":{"id":4396,"from_project":4116,"serial_no":"2026-01-27-001"},"project_status_display":"\u5546\u673a\u6210\u4ea4","is_collected":false,"bgcolor":"#53cd02"}},"project":{"id":4116,"client_id":3438,"project_status":3,"project_progress":6,"budget":"3837034","profit_pct":"0.61","bargain_date":"2026-01-27","description":"","created_by":1005,"created_at":"2026-01-27 17:20:18","updated_at":"2026-02-06 17:15:32","engineer_id":"","project_title":"\u4e2d\u535a\u6570\u667a\u6db2\u51b7\u5de5\u4f5c\u7ad9-\u4e2d\u77f3\u5316","collected":"0","status_updated_at":"2026-01-27 17:22:47.009829+08","success_rate":"","comment":"","contract_type":1,"progress_updated_at":"2026-01-27 17:20:18.438458+08","forecast_updated_at":"2026-01-27 17:20:18.438458+08","end_at":"","pinyin_shortcut":"zbszylgzzzsh","creator":1005,"used_client":"","from_contact":"","total_contact_point":"","paid_contact_point":"","project_product_version_id":1318,"is_sales_order_ready":true,"collected_plan":"3837034","change_status_to":"","is_verify":false,"client":{"id":3438,"key":3438,"name":"\u5927\u8fde\u665f\u4e30\u539f\u4fe1\u606f\u54a8\u8be2\u6709\u9650\u516c\u53f8\uff08\u8fc7\u5355\uff09","logo":"","client_type":5,"client_class":43,"client_industry":12,"sales_rep":1005},"usedClient":"","projectStatus":{"id":3,"key":3,"name":"\u5546\u673a\u6210\u4ea4","color":"#53cd02"},"createdBy":{"id":1005,"key":1005,"name":"\u8d75\u660e\uff08\u9500\u552e\u4eba\u5458\uff09","sex":"F","department_id":1,"avatar":{"id":16,"user_id":1005,"name":"\/files\/cdn\/a57be577deb434\/avatar\/56876dde-37eb-39fc-853a-47eaef6510e5.png"},"salesGroup":{"id":80,"key":80,"name":"\u5408\u4f19\u4eba"},"department":{"id":1,"key":1,"name":"\u9500\u552e\u90e8"}},"projectCreator":{"id":1005,"key":1005,"name":"\u8d75\u660e\uff08\u9500\u552e\u4eba\u5458\uff09","sex":"F","department_id":1,"avatar":{"id":16,"user_id":1005,"name":"\/files\/cdn\/a57be577deb434\/avatar\/56876dde-37eb-39fc-853a-47eaef6510e5.png"}},"salesRep":{"id":1005,"key":1005,"name":"\u8d75\u660e\uff08\u9500\u552e\u4eba\u5458\uff09","sex":"F","avatar":{"id":16,"user_id":1005,"name":"\/files\/cdn\/a57be577deb434\/avatar\/56876dde-37eb-39fc-853a-47eaef6510e5.png"},"salesGroup":{"id":80,"key":80,"name":"\u5408\u4f19\u4eba"}},"buildContract":{"id":4396,"from_project":4116,"serial_no":"2026-01-27-001"},"project_status_display":"\u5546\u673a\u6210\u4ea4","is_collected":false,"bgcolor":"#53cd02"}}],"countArr":{"total_amount":"1220108","total_profit":"36604","profit_pct":"3.00006228956780875100"},"pagenation":{"totalcount":1,"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 (Macintosh; Intel Mac OS X 10.15; rv:151.0) Gecko\/20100101 Firefox\/151.0"}', FALSE, '2026-06-12 10:15:22', 33139712) RETURNING "id" |
| 10:15:22.572 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: GET |
| 10:15:22.572 | trace | yii\redis\Connection::executeCommand | Executing Redis Command: SET |