首页 > 编程学习 > 【实际开发12】- 经验 experience

目录

1. 经验 experience

1. 无多大价值 , 停留数据展示层面

2. 保证数据一致性问题

3. 新增时 , 可先关注核心基础数据 ( 复杂数据以修改形式完善 )

4. 新增 / 修改 ( 幂等性处理 )

5. 增 / 删 / 改 添加日志 , 查询无需日志

6. 需要对接多模块的通用字段设计 : String ( 推荐 )

7. 参数转换器

1. 资产结构数据边界 : tenantId , 但 tenantId=1系统租户查看所有

2. 多对象接受 [ ] 时 , query 无法传递 数组问题 : String 中转接收

8. 数据源关系维护

1. 主体 paret_relation 字段 , 存放 Json 数组 ( 解析 )

9. 中间表数据维护

1. 同步删除

2. 避免手动删除数据

10. 数据清洗 - ( 平台级别 : Dbus )

11. 前后端交互 : 入参数据结构演进 ( 单 转 多 ) ~ pic


1. 经验 experience


1. 无多大价值 , 停留数据展示层面


2. 保证数据一致性问题

保证数据一致性问题:

1、数据存 id

2、数据源唯一


3. 新增时 , 可先关注核心基础数据 ( 复杂数据以修改形式完善 )


4. 新增 / 修改 ( 幂等性处理 )


5. 增 / 删 / 改 添加日志 , 查询无需日志


6. 需要对接多模块的通用字段设计 : String ( 推荐 )

锚点模块 , MachineId

1、对接 设备;锚点 type = 0 时 , MachineId 是 设备ID

2、对接 摄像头;锚点 type = 1 时 , MachineId 是 摄像头ID (坑 , 仅此处ID是 极长的 String 类型)

3、对接 公司;锚点 type = 2 时 , MachineId 是 公司ID

导致:
    对接 摄像头数据 , 可能需要大量修改锚点基础数据 - 20.08.04 待处理


7. 参数转换器


1. 资产结构数据边界 : tenantId , 但 tenantId=1系统租户查看所有

    /*** 将 tenantId == 1 的系统租户 , 处理为无 tenantId 的情况 - 20.10.12* @param iotStructureDTO 入参* @return IotStructureDTO 处理后的入参*/private IotStructureDTO dealParam(IotStructureDTO iotStructureDTO) {if(iotStructureDTO.getTenantId() == 1){iotStructureDTO.setTenantId(null);return iotStructureDTO;}return iotStructureDTO;}


2. 多对象接受 [ ] 时 , query 无法传递 数组问题 : String 中转接收

    @Overridepublic IPage<IotResourcesVO> queryIotResourcesByLabel(Page page ,  IotResourcesDTO iotResourcesDTO) {String labelIdList = iotResourcesDTO.getLabelIdList();List<Integer> list = Arrays.asList(labelIdList.split(" , ")).stream().map(s -> Integer.parseInt(s))  //.map(Integer::valueOf).collect(Collectors.toList());iotResourcesDTO.setLabelId(list);IPage<IotResourcesVO> iotResourcesVOIPage = iotResourcesMapper.queryIotResourcesByLabel(page ,  iotResourcesDTO);return iotResourcesVOIPage;}


8. 数据源关系维护


1. 主体 paret_relation 字段 , 存放 Json 数组 ( 解析 )


9. 中间表数据维护


1. 同步删除


2. 避免手动删除数据


10. 数据清洗 - ( 平台级别 : Dbus )


11. 前后端交互 : 入参数据结构演进 ( 单 转 多 ) ~ pic

情景 :

1、原始设计,虚拟点位对应 单个设备,多个属性,设备由产品限制维度(取 1),属性由产品限制维度(取 > 1)

2、新需求,虚拟点位对应多个产品维度的属性,则最新虚拟点位设计:

    1、虚拟点位对应 多个设备,多个属性

    2、设备由产品限制维度(取 >1),属性由产品限制维度(取 > 1)

最终版:

1、方便数据回显

2、利于业务逻辑处理

前端 :

1、数据以 proId、machineId 为维度,一组一组的构建

2、+ 号按钮,触发新一组数据

 


本文链接:https://www.ngui.cc/article/show-861319.html
Copyright © 2010-2022 ngui.cc 版权所有 |关于我们| 联系方式| 豫B2-20100000