目录
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