thingsKit_1.4.0_1.4.1.sql 21.8 KB
ALTER TABLE "public"."device" ADD COLUMN "device_type" varchar(36) COLLATE "pg_catalog"."default";

COMMENT ON COLUMN "public"."device"."device_type" IS 'DeviceTypeEnum枚举值';

ALTER TABLE "public"."device" ADD COLUMN "brand" varchar(100) COLLATE "pg_catalog"."default";

COMMENT ON COLUMN "public"."device"."brand" IS '设备厂商';

ALTER TABLE "public"."device" ADD COLUMN "organization_id" varchar(36) COLLATE "pg_catalog"."default" DEFAULT NULL::character varying;

COMMENT ON COLUMN "public"."device"."organization_id" IS '组织ID';

ALTER TABLE "public"."device" ADD COLUMN "alarm_status" int2 DEFAULT 0;

COMMENT ON COLUMN "public"."device"."alarm_status" IS '告警状态:0:正常 1:告警';

ALTER TABLE "public"."device" ADD COLUMN "gateway_id" uuid;

COMMENT ON COLUMN "public"."device"."gateway_id" IS '从设备挂靠的网关设备主键';

ALTER TABLE "public"."device" ADD COLUMN "sn" varchar(36) COLLATE "pg_catalog"."default";

COMMENT ON COLUMN "public"."device"."sn" IS '设备编号';

ALTER TABLE "public"."device" ADD COLUMN "code" varchar(36) COLLATE "pg_catalog"."default";

COMMENT ON COLUMN "public"."device"."code" IS '设备标识符,例如:设备地址码';

ALTER TABLE "public"."device" ADD COLUMN "alias" varchar(255) COLLATE "pg_catalog"."default";

COMMENT ON COLUMN "public"."device"."alias" IS '设备别名';

ALTER TABLE "public"."device" ADD COLUMN "code_type" varchar(10) COLLATE "pg_catalog"."default";

COMMENT ON COLUMN "public"."device"."code_type" IS '产品协议为TCP/UDP使用,MODBUS/CUSTOM';

ALTER TABLE "public"."device" ADD COLUMN "device_info" varchar(1000) COLLATE "pg_catalog"."default";

COMMENT ON COLUMN "public"."device"."device_info" IS '用于存放设备附属信息';

ALTER TABLE "public"."device" ADD COLUMN "update_time" int8;

ALTER TABLE "public"."device" ADD COLUMN "creator" uuid;

COMMENT ON COLUMN "public"."device"."creator" IS '创建用户';

ALTER TABLE "public"."device" ADD COLUMN "updater" uuid;

COMMENT ON COLUMN "public"."device"."updater" IS '更新用户';

ALTER TABLE "public"."device" ADD COLUMN "description" varchar(255) COLLATE "pg_catalog"."default";

COMMENT ON COLUMN "public"."device"."description" IS '描述';

ALTER TABLE "public"."device_profile" ALTER COLUMN "is_default" SET NOT NULL;

ALTER TABLE "public"."device_profile" ADD COLUMN "script_id" varchar(80) COLLATE "pg_catalog"."default";

COMMENT ON COLUMN "public"."device_profile"."script_id" IS '产品转换脚本ID,多个ID用逗号分隔';

ALTER TABLE "public"."device_profile" ADD COLUMN "device_type" varchar(36) COLLATE "pg_catalog"."default";

COMMENT ON COLUMN "public"."device_profile"."device_type" IS '产品类型,DeviceTypeEnum枚举值';

ALTER TABLE "public"."device_profile" ADD COLUMN "category_id" varchar COLLATE "pg_catalog"."default";

COMMENT ON COLUMN "public"."device_profile"."category_id" IS '品类id';

ALTER TABLE "public"."device_profile" ADD COLUMN "update_time" int8;

ALTER TABLE "public"."device_profile" ADD COLUMN "creator" uuid;

COMMENT ON COLUMN "public"."device_profile"."creator" IS '创建用户';

ALTER TABLE "public"."device_profile" ADD COLUMN "updater" uuid;

COMMENT ON COLUMN "public"."device_profile"."updater" IS '更新用户';

ALTER TABLE "public"."tk_device_profile_category" ALTER COLUMN "tenant_id" TYPE varchar(36) COLLATE "pg_catalog"."default";

CREATE TABLE "public"."tk_protocol_template" (
                                                 "id" uuid NOT NULL,
                                                 "name" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
                                                 "code_type" varchar(10) COLLATE "pg_catalog"."default",
                                                 "path" varchar(255) COLLATE "pg_catalog"."default" NOT NULL,
                                                 "content" text COLLATE "pg_catalog"."default",
                                                 "des" varchar(255) COLLATE "pg_catalog"."default",
                                                 "created_time" int8,
                                                 "update_time" int8,
                                                 "creator" uuid,
                                                 "updater" uuid,
                                                 "tenant_id" uuid NOT NULL,
                                                 CONSTRAINT "tk_protocol_template_pkey" PRIMARY KEY ("id")
)
;

ALTER TABLE "public"."tk_protocol_template" OWNER TO "postgres";

COMMENT ON COLUMN "public"."tk_protocol_template"."id" IS '主建';

COMMENT ON COLUMN "public"."tk_protocol_template"."name" IS '名称';

COMMENT ON COLUMN "public"."tk_protocol_template"."code_type" IS 'MODBUS/CUSTOM';

COMMENT ON COLUMN "public"."tk_protocol_template"."path" IS '模板路径';

COMMENT ON COLUMN "public"."tk_protocol_template"."content" IS '模板内容';

COMMENT ON COLUMN "public"."tk_protocol_template"."des" IS '描述';

COMMENT ON COLUMN "public"."tk_protocol_template"."created_time" IS '创建时间';

COMMENT ON COLUMN "public"."tk_protocol_template"."update_time" IS '创建用户';

COMMENT ON COLUMN "public"."tk_protocol_template"."creator" IS '创建用户';

COMMENT ON COLUMN "public"."tk_protocol_template"."updater" IS '更新用户';

COMMENT ON COLUMN "public"."tk_protocol_template"."tenant_id" IS '租户ID';

ALTER TABLE "public"."tk_scene_linkage" ADD COLUMN "is_edge" int4 DEFAULT 0;

COMMENT ON COLUMN "public"."tk_scene_linkage"."is_edge" IS '是否边缘0否1是';

DROP TABLE "public"."sys_admin_setting";
DROP TABLE "public"."tk_device_credentials";
DROP TABLE tk_configuration_act;
DROP TABLE tk_configuration_datasource;
DROP TABLE tk_configuration_event;
-- 更新表的数据
update device di set device_type = td.device_type,
                     brand = td.brand,
                     organization_id = td.organization_id,
                     alarm_status = td.alarm_status,
                     gateway_id = td.gateway_id::UUID,
    sn = td.sn,
    code = td.code,
    alias = td.alias,
    code_type = td.code_type,
    device_info = td.device_info,
    creator = td.creator::UUID,
    updater = td.updater::UUID,
    description = td.description
from tk_device td WHERE di.id::TEXT = td.tb_device_id;

update device_profile dp set script_id = tkp.script_id,
                             device_type = tkp.device_type,
                             category_id = tkp.category_id,
                             creator = tkp.creator::UUID,
    updater = tkp.updater::UUID
FROM tk_device_profile tkp WHERE dp.id::TEXT = tkp.tb_profile_id;

--DROP TABLE "public"."tk_device";
--DROP TABLE "public"."tk_device_profile";

UPDATE tk_java_script SET service_type=SENSOR WHERE service_type IN ('JSON','ASCII','HEX') OR service_type IS NULL;

UPDATE tk_things_model e
SET device_profile_id = d.tb_profile_id
    FROM tk_device_profile d
WHERE e.device_profile_id = d.id;

UPDATE device e
SET device_type = d.device_type,brand = d.brand ,organization_id = d.organization_id ,sn = d.sn  ,code = d.code  ,alias = d.alias ,code_type = d.code_type ,device_info = d.device_info ,description = d.description
    FROM tk_device d
WHERE e.id = d.tb_device_id::uuid;

UPDATE device e
SET gateway_id = d.gateway_id::uuid
FROM tk_device d
WHERE e.id = d.tb_device_id::uuid and d.gateway_id IS NOT NULL and d.gateway_id !='';

UPDATE device e
SET organization_id = d.id
    FROM tk_organization d
WHERE e.organization_id IS NULL AND e.tenant_id = d.tenant_id::uuid and d.parent_id IS NULL;

--重新更新视图
DROP VIEW IF EXISTS device_info_view CASCADE;
DROP VIEW IF EXISTS device_info_active_attribute_view CASCADE;
CREATE OR REPLACE VIEW device_info_active_attribute_view AS
SELECT d.*
     , c.title as customer_title
     , COALESCE((c.additional_info::json->>'isPublic')::bool, FALSE) as customer_is_public
     , d.type as device_profile_name
     , COALESCE(da.bool_v, FALSE) as active
     , CASE
           WHEN attrAt.long_v is null THEN 'INACTIVE'
           WHEN da.bool_v =true THEN 'ONLINE'
           WHEN da.bool_v =false and  attrAt.long_v is not null THEN 'OFFLINE'
    END AS device_state
FROM device d
         LEFT JOIN customer c ON c.id = d.customer_id
         LEFT JOIN attribute_kv da ON da.entity_type = 'DEVICE' AND da.entity_id = d.id AND da.attribute_type = 'SERVER_SCOPE' AND da.attribute_key = 'active'
         LEFT JOIN attribute_kv attrD ON d.id = attrD.entity_id AND attrD.entity_type ='DEVICE' AND attrD.attribute_key='lastDisconnectTime'
         LEFT JOIN attribute_kv attrC ON d.id = attrC.entity_id AND attrC.entity_type ='DEVICE' AND attrC.attribute_key='lastConnectTime'
         LEFT JOIN attribute_kv attrAt ON d.id = attrAt.entity_id AND attrAt.entity_type ='DEVICE' AND attrAt.attribute_key='lastActivityTime';


CREATE OR REPLACE VIEW device_info_view AS SELECT * FROM device_info_active_attribute_view;



-- 新增菜单
INSERT INTO "public"."sys_menu"("id", "parent_id", "path", "type", "permission", "creator", "create_time", "updater", "update_time", "name", "tenant_id", "component", "redirect", "alias", "case_sensitive", "meta", "sort") VALUES ('4d0f750c-79ea-4164-936c-3743fe3dc179', '3322d5d7-4f15-48f2-b74b-b7d3dff09ceb', '/edge/edge_device/edge_device_detail/:id/:edgeId', 'SYSADMIN', 'edge:device_detail:view', '80808080-8080-8080-8080-808080808080', '2024-06-14 17:25:35.829251', '80808080-8080-8080-8080-808080808080', '2024-06-14 17:26:08.467387', '边缘设备详情', '13814000-1dd2-11b2-8080-808080808080', '/edge/instance/components/EdgeDevice/EdgeDeviceDetailDrawer', NULL, NULL, NULL, '{"icon":"ant-design:api-twotone","title":"边缘设备详情","isLink":false,"menuType":"1","ignoreKeepAlive":false,"hideMenu":true,"status":"0"}', 4);
INSERT INTO "public"."sys_menu"("id", "parent_id", "path", "type", "permission", "creator", "create_time", "updater", "update_time", "name", "tenant_id", "component", "redirect", "alias", "case_sensitive", "meta", "sort") VALUES ('203a1eef-47f7-40e5-afd4-9bdab2895796', '3322d5d7-4f15-48f2-b74b-b7d3dff09ceb', '/edge/edge_device/:id', 'SYSADMIN', 'edge:device:view', '80808080-8080-8080-8080-808080808080', '2024-06-14 17:23:59.144398', '80808080-8080-8080-8080-808080808080', '2024-06-14 17:24:18.297352', '边缘设备', '13814000-1dd2-11b2-8080-808080808080', '/edge/instance/components/EdgeDevice/index', NULL, NULL, NULL, '{"icon":"ant-design:api-filled","title":"边缘设备","isLink":false,"menuType":"1","ignoreKeepAlive":false,"hideMenu":true,"status":"0"}', 3);
INSERT INTO "public"."sys_menu"("id", "parent_id", "path", "type", "permission", "creator", "create_time", "updater", "update_time", "name", "tenant_id", "component", "redirect", "alias", "case_sensitive", "meta", "sort") VALUES ('5e3059e8-5a35-46a5-b654-6a0f442c1318', '3322d5d7-4f15-48f2-b74b-b7d3dff09ceb', '/edge/edge_detail/:id', 'SYSADMIN', 'edge:detail:view', '80808080-8080-8080-8080-808080808080', '2024-06-14 16:35:32.884092', '80808080-8080-8080-8080-808080808080', '2024-06-14 16:37:41.726086', '边缘详情', '13814000-1dd2-11b2-8080-808080808080', '/edge/instance/components/EdgeInstance/index', NULL, NULL, NULL, '{"icon":"ant-design:aliyun-outlined","title":"边缘详情","isLink":false,"menuType":"1","ignoreKeepAlive":false,"hideMenu":true,"status":"0"}', 2);
INSERT INTO "public"."sys_menu"("id", "parent_id", "path", "type", "permission", "creator", "create_time", "updater", "update_time", "name", "tenant_id", "component", "redirect", "alias", "case_sensitive", "meta", "sort") VALUES ('35d9a9e4-c3fc-4fa1-a014-4e11fce1c172', '3322d5d7-4f15-48f2-b74b-b7d3dff09ceb', '/edge/instance', 'SYSADMIN', 'edge:instance:view', '80808080-8080-8080-8080-808080808080', '2024-06-13 14:34:50.577846', '80808080-8080-8080-8080-808080808080', '2024-06-13 14:35:21.950212', '边缘实例', '13814000-1dd2-11b2-8080-808080808080', '/edge/instance/index', NULL, NULL, NULL, '{"icon":"ant-design:deployment-unit-outlined","title":"边缘实例","isLink":false,"menuType":"1","ignoreKeepAlive":true,"hideMenu":false,"status":"0"}', 1);
INSERT INTO "public"."sys_menu"("id", "parent_id", "path", "type", "permission", "creator", "create_time", "updater", "update_time", "name", "tenant_id", "component", "redirect", "alias", "case_sensitive", "meta", "sort") VALUES ('3322d5d7-4f15-48f2-b74b-b7d3dff09ceb', NULL, '/edge', 'SYSADMIN', 'edge:management:view', '80808080-8080-8080-8080-808080808080', '2024-06-13 14:32:26.688251', '80808080-8080-8080-8080-808080808080', '2024-06-13 14:32:41.642662', '边缘管理', '13814000-1dd2-11b2-8080-808080808080', 'LAYOUT', NULL, NULL, NULL, '{"icon":"ant-design:aliyun-outlined","title":"边缘管理","isLink":false,"menuType":"0","hideMenu":false,"status":"0"}', 7);


-- 升级脚本 品类表新增字段并设置租户id

UPDATE  tk_device_profile_category  set tenant_id = '13814000-1dd2-11b2-8080-808080808080';

-- 超级管理员初始化菜单问题
INSERT INTO "public"."sys_role_menu"("role_id", "menu_id") VALUES ('81818181-8181-8181-8181-818181818181', '38b9a21a-aaf5-42fc-a85f-4381bca3303c');
INSERT INTO "public"."sys_role_menu"("role_id", "menu_id") VALUES ('81818181-8181-8181-8181-818181818181', '00fccddb-cbdc-4abd-9a1f-1c4f049e6ba2');
INSERT INTO "public"."sys_role_menu"("role_id", "menu_id") VALUES ('81818181-8181-8181-8181-818181818181', '44f65518-2d9e-4fd5-aa3f-8baf816d912f');
INSERT INTO "public"."sys_role_menu"("role_id", "menu_id") VALUES ('81818181-8181-8181-8181-818181818181', 'b47acbb6-ef7f-4c8a-9ab7-17098b5f3b63');
INSERT INTO "public"."sys_role_menu"("role_id", "menu_id") VALUES ('81818181-8181-8181-8181-818181818181', 'dac55d7f-4359-4a4f-99f5-4cb728c1efee');
INSERT INTO "public"."sys_role_menu"("role_id", "menu_id") VALUES ('81818181-8181-8181-8181-818181818181', '688f7bd1-a6fe-43e3-b8b3-6e59aa070ff4');
--协议模板字典
INSERT INTO "public"."sys_dict"("id", "dict_name", "dict_code", "description", "tenant_id", "creator", "create_time", "updater", "update_time") VALUES ('9ab755f8-e54c-435f-b0fc-716b7948ea7a', '协议模板类型', 'protocol_template_type', NULL, '13814000-1dd2-11b2-8080-808080808080', '80808080-8080-8080-8080-808080808080', '2024-07-04 19:50:44.551585', NULL, NULL);
INSERT INTO "public"."sys_dict_item"("id", "dict_id", "item_text", "item_value", "description", "sort", "status", "tenant_id", "creator", "create_time", "updater", "update_time") VALUES ('bdbab558-73c6-42e4-94a3-2428d68aa4d5', '9ab755f8-e54c-435f-b0fc-716b7948ea7a', 'MODBUS_RTU', 'MODBUS_RTU', NULL, 1, 1, '13814000-1dd2-11b2-8080-808080808080', '80808080-8080-8080-8080-808080808080', '2024-07-04 19:51:48.747287', NULL, NULL);
INSERT INTO "public"."sys_dict_item"("id", "dict_id", "item_text", "item_value", "description", "sort", "status", "tenant_id", "creator", "create_time", "updater", "update_time") VALUES ('f7a878fd-3ede-4740-93cb-f84b52d2dc06', '9ab755f8-e54c-435f-b0fc-716b7948ea7a', 'CUSTOM', 'CUSTOM', NULL, 1, 1, '13814000-1dd2-11b2-8080-808080808080', '80808080-8080-8080-8080-808080808080', '2024-07-04 19:51:43.063714', NULL, NULL);
INSERT INTO "public"."sys_dict_item"("id", "dict_id", "item_text", "item_value", "description", "sort", "status", "tenant_id", "creator", "create_time", "updater", "update_time") VALUES ('32f210a6-4409-40c3-8ad4-52d81345aef3', '9ab755f8-e54c-435f-b0fc-716b7948ea7a', 'FTP', 'FTP', NULL, 1, 1, '13814000-1dd2-11b2-8080-808080808080', '80808080-8080-8080-8080-808080808080', '2024-07-29 11:05:49.551216', NULL, NULL);
INSERT INTO "public"."sys_dict_item"("id", "dict_id", "item_text", "item_value", "description", "sort", "status", "tenant_id", "creator", "create_time", "updater", "update_time") VALUES ('cad826d5-04aa-4bc3-853c-03c728d620d6', '9ab755f8-e54c-435f-b0fc-716b7948ea7a', 'XMPP', 'XMPP', NULL, 1, 1, '13814000-1dd2-11b2-8080-808080808080', '80808080-8080-8080-8080-808080808080', '2024-07-29 11:05:42.273393', NULL, NULL);
INSERT INTO "public"."sys_dict_item"("id", "dict_id", "item_text", "item_value", "description", "sort", "status", "tenant_id", "creator", "create_time", "updater", "update_time") VALUES ('6843a4a4-81ff-446c-8eca-8e5f9ad4da4a', '9ab755f8-e54c-435f-b0fc-716b7948ea7a', 'OCPP', 'OCPP', NULL, 1, 1, '13814000-1dd2-11b2-8080-808080808080', '80808080-8080-8080-8080-808080808080', '2024-07-29 11:05:35.148915', NULL, NULL);
INSERT INTO "public"."sys_dict_item"("id", "dict_id", "item_text", "item_value", "description", "sort", "status", "tenant_id", "creator", "create_time", "updater", "update_time") VALUES ('1e1c9d10-5797-4e3b-ad31-4e4d95313848', '9ab755f8-e54c-435f-b0fc-716b7948ea7a', 'ODBC', 'ODBC', NULL, 1, 1, '13814000-1dd2-11b2-8080-808080808080', '80808080-8080-8080-8080-808080808080', '2024-07-29 11:05:27.066856', NULL, NULL);
INSERT INTO "public"."sys_dict_item"("id", "dict_id", "item_text", "item_value", "description", "sort", "status", "tenant_id", "creator", "create_time", "updater", "update_time") VALUES ('5b7d328c-3ede-4207-b133-5963c3ac9331', '9ab755f8-e54c-435f-b0fc-716b7948ea7a', 'OPC-DA', 'OPC-DA', NULL, 1, 1, '13814000-1dd2-11b2-8080-808080808080', '80808080-8080-8080-8080-808080808080', '2024-07-29 11:05:14.4492', NULL, NULL);
INSERT INTO "public"."sys_dict_item"("id", "dict_id", "item_text", "item_value", "description", "sort", "status", "tenant_id", "creator", "create_time", "updater", "update_time") VALUES ('effbdab7-53c3-4045-bf33-2eea80db1318', '9ab755f8-e54c-435f-b0fc-716b7948ea7a', 'SNMP', 'SNMP', NULL, 1, 1, '13814000-1dd2-11b2-8080-808080808080', '80808080-8080-8080-8080-808080808080', '2024-07-29 11:05:06.487769', NULL, NULL);
INSERT INTO "public"."sys_dict_item"("id", "dict_id", "item_text", "item_value", "description", "sort", "status", "tenant_id", "creator", "create_time", "updater", "update_time") VALUES ('c0ad556e-baf0-4b4f-824e-0273de5bdd2f', '9ab755f8-e54c-435f-b0fc-716b7948ea7a', 'OPC-UA', 'OPC-UA', NULL, 1, 1, '13814000-1dd2-11b2-8080-808080808080', '80808080-8080-8080-8080-808080808080', '2024-07-29 11:04:57.309568', NULL, NULL);
INSERT INTO "public"."sys_dict_item"("id", "dict_id", "item_text", "item_value", "description", "sort", "status", "tenant_id", "creator", "create_time", "updater", "update_time") VALUES ('522e4ad7-4baf-412b-a04a-93f2a700cf08', '9ab755f8-e54c-435f-b0fc-716b7948ea7a', 'PLC', 'PLC', NULL, 1, 1, '13814000-1dd2-11b2-8080-808080808080', '80808080-8080-8080-8080-808080808080', '2024-07-29 11:04:49.033207', NULL, NULL);
INSERT INTO "public"."sys_dict_item"("id", "dict_id", "item_text", "item_value", "description", "sort", "status", "tenant_id", "creator", "create_time", "updater", "update_time") VALUES ('dc89df49-1f76-4bf2-bd87-947d2f4ba54a', '9ab755f8-e54c-435f-b0fc-716b7948ea7a', 'BACnet', 'BACnet', NULL, 1, 1, '13814000-1dd2-11b2-8080-808080808080', '80808080-8080-8080-8080-808080808080', '2024-07-29 11:04:41.792021', NULL, NULL);
INSERT INTO "public"."sys_dict_item"("id", "dict_id", "item_text", "item_value", "description", "sort", "status", "tenant_id", "creator", "create_time", "updater", "update_time") VALUES ('2e7ea3a7-28e3-4aee-9272-0d378d5f830b', '9ab755f8-e54c-435f-b0fc-716b7948ea7a', 'MODBUS_TCP', 'MODBUS_TCP', NULL, 1, 1, '13814000-1dd2-11b2-8080-808080808080', '80808080-8080-8080-8080-808080808080', '2024-07-29 11:04:09.289621', NULL, NULL);


-- 大屏公共接口修改
UPDATE "public"."tk_data_view_interface" SET "interface_name" = '获取设备地理位置列表', "request_content_type" = 0, "request_origin_url" = 'localhost', "request_http_type" = 'POST', "request_url" = '/api/yt/device', "request_params" = '{"requestSQLContent":{},"Params":[{"key":"scope","value":"page","mores":null,"editDisabled":false,"required":true},{"key":"scope","value":"pageSize","mores":null,"editDisabled":false,"required":true}],"Header":[{"key":"ContentType","value":"none","required":false}],"Body":{"json":{},"xml":"","form-data":[{"value":"","mores":null,"editDisabled":false,"required":false}],"x-www-form-urlencoded":[{"value":"","mores":null,"editDisabled":false,"required":false}]}}', "state" = 1, "creator" = '80808080-8080-8080-8080-808080808080', "create_time" = '2023-09-27 09:55:13.560571', "updater" = '80808080-8080-8080-8080-808080808080', "update_time" = '2024-07-29 16:45:35.362066', "tenant_id" = '13814000-1dd2-11b2-8080-808080808080', "remark" = NULL, "interface_type" = 'SYSTEM', "filter" = 'const {
  items
} = res
if (!items)return

//百度地图转高德地图经纬度
const bMapTransQQMap = (lng, lat)=> {
  let x_pi = 3.14159265358979324 * 3000.0 / 180.0;
  let x = lng - 0.0065;
  let y = lat - 0.006;
  let z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
  let theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
  let lngs = z * Math.cos(theta);
  let lats = z * Math.sin(theta);
  return {
    lng: lngs,
    lat: lats
  }
}

//数据key值
const key = ''markers''

//数据value值
const value = items.reduce((acc, curr)=> {
  const items = []
  const {
    name
  } = curr.organizationDTO
  const {
    transportType
  } = curr.deviceProfile
  const extraInfo = {
    tbDeviceId: curr.tbDeviceId,
    name: curr.name,
    alias: curr.alias,
    organizationDTO: {
      name,
    },
    deviceState: curr.deviceState,
    deviceProfile: {
      transportType
    },
    deviceProfileId: curr.deviceProfileId,
    deviceInfo: curr.deviceInfo
  }
  const transResult = bMapTransQQMap(curr.deviceInfo?.longitude || 0, curr.deviceInfo?.latitude || 0)
  items.push({
    name: curr.alias || curr.name,
    value: 20, //标注大小
    position: [transResult.lng, transResult.lat],
    extraInfo
  })
  return [...items, ...acc]
}, [])

return {
  [key]: value
}' WHERE "id" = '6e58fbe2-82ef-4d06-914c-babf365ca528';

-- 租户打开产品品类权限
UPDATE "public"."sys_dict_item" SET "dict_id" = '6d53709b-d5b6-4b5e-b9e1-0a55e6c8f9f5', "item_text" = '产品品类', "item_value" = 'deviceManager:productCategory:list', "description" = NULL, "sort" = 1, "status" = 0, "tenant_id" = '13814000-1dd2-11b2-8080-808080808080', "creator" = '80808080-8080-8080-8080-808080808080', "create_time" = '2023-11-10 09:33:46.307774', "updater" = '80808080-8080-8080-8080-808080808080', "update_time" = '2023-11-10 09:39:39.74109' WHERE "id" = '0b3e3a22-d8fe-459d-8f53-ecea70d40093';