【实际开发13】- 经验 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 中转接收

    @Override
    public 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、+ 号按钮,触发新一组数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值