【简道云·插件开发大赛】杭州顶杰:EXCEL附件导入子表单、MYSQL数据库条件查询

楼主
我是社区第845866位番薯,欢迎点我头像关注我哦~
15

一、选手介绍

  • 团队名称:杭州顶杰
  • 团队成员:王秋意、刘耀康、刘三兴
  • 成员分工:
    • 王秋意:队长,负责插件设计及对外沟通、插件属性及文字内容撰写。
    • 刘耀康:队员,负责外部数据获取,测试环境搭建。
    • 刘三兴:队员,负责技术开发及插件测试。
  • 参赛初衷:插件市场可用插件太少,不能解决一些特定场景问题,自己也能实施,顺手拿个奖金团建。

二、作品介绍

(一)插件一:EXCEL附件导入子表单

  • 插件名称:EXCEL附件导入子表单
  • 插件简介:
    • 支持通过EXCEL附件导入子表单数据,减轻人工录入子表单工作。
  • 插件详细介绍
    • 适用行业:通用型,不区分行业。
    • 需求场景举例:
      • 业务背景:采购场景中,业务人员经常需要用到采购清单,采购清单作为采购合同审批流程的辅助材料需要进行评审;。
      • 当前痛点:多数情况下采购清单多达几十数百行,简道云目前还不能实现子表单导入,需要流程发起人手工一行行录入,极大影响用户了体验。
      • 解决方案:利用「EXCEL附件导入子表单」插件,业务人员只需上传与子表单结构一样的EXCEL文件,即可自动识别并回填清单数据到子表单。极大减轻了采购人员重复录入清单工作量,也减少了人为录入可能导致的错误。
    • 设计思路及实现路径:
      • 设计思路:接收附件字段,判断附件类型是否为EXCEL文件,利用pandas加载和解析EXCEL附件,将附件内容转化为对象数组,最后响应给返还对象字段。
      • 实现路径:接收附件地址>>判断附件类型>>加载和解析EXCEL附件内容>>组装响应对象>>填充到响应字段>>插件发布插件
      • 效果演示:演示视频 / 效果图
  • 插件配置说明
    • 触发动作:
    • 执行动作:
    • 预期效果:上传EXCEL附件,触发插件,即可识别EXCEL字段信息并回填,返回验真结果。
    • 注意事项:
      • 默认读取第一个EXCEL附件(可以给该附件字段增加校验只能为1份),EXCEL格式附件(主要指xlsx和xls),其他类型附件会提示“请上传EXCEL附件”。
      • 受子表单行数限制,默认只读取200行记录(不含标题行),超过200行记录则直接提示“附件超出200行记录”
      • 受动态列数影响,EXCEL列数默认配置了20列按顺序对应20个字段,如EXCEL和子表单都超过20列则需要联系开发者调整插件字段配置
      • EXCEL中如字段是计算函数,则解析时该字段为空;故需要导入人在导入EXCEL前对计算函数列存为数值

 

(二)插件二:Mysql数据库查询并回填结果到子表单

  • 插件名称:Mysql数据库查询并回填结果到子表单
  • 插件简介:
    • 支持通过配置数据库查询条件,实现获取mysql数据库中某个业务表/视图的查询结果。
  • 插件详细介绍:
    • 适用行业:通用型,不区分行业。
    • 需求场景举例:
      • 业务背景:应用搭建过程中有需要和第三方系统数据库交互的需求,比如通过配置简易的查询条件查询mysql数据库中的数据填充到当前流程表单/业务表单的主/子表单中;
      • 当前痛点:插件市场有了一项查询mysql数据的插件,但仅返回了数据库单条记录填充回主表字段,对于一些子表查询的需求和带过滤条件的查询需求未能予以满足。
      • 解决方案:利用「Mysql数据库查询」插件,技术人员/业务人员通过配置对应过滤条件,即可查询mysql数据库数据并填充到子表单。增加了与第三方系统mysql数据库的交互性。
    • 设计思路及实现路径:
      • 设计思路:接收查询条件字段,判断查询方式和过滤方式,利用pymysql库连接有公网映射地址或位于公有云的mysql数据库,执行组装的查询语句获得返还结果,并将返回结果转化为对象数组,最后响应给页面主子表单字段。
      • 实现路径:接收查询条件>>判断查询方式和类型>>组装查询语句>>通过pymysql库连接数据库并获得查询游标>>执行查询语句>>获取查询结果数据集>>封装查询结果为对象数组>>填充到页面响应字段
      • 效果演示:演示视频 / 效果图
  • 插件配置说明
    • 触发动作:
    • 执行动作:
    • 调试结果:
    • 预期效果:配置查询条件,触发mysql数据库查询插件,获取查询结果并组装响应对象,返回对象数组填充到页面主子表单字段
    • 注意事项:
      • 目标mysql数据库需要允许通过公网地址访问,如为客户内网数据库需要配置公网地址映射;建议设置为特定数据库只读用户权限;
      • 使用此插件需要注意与mysql数据库查询语句相对应,有mysql数据库使用经验则更容易理解配置。受限于多组过滤条件配置会极为复杂,此插件设置为仅可配置单字段过滤/排序条件;如有多字段过滤需求,可联系开发者单独定制查询逻辑;
      • 受子表单行数限制,默认只填充200行记录,超过200行记录会提示“超出200行记录”字样;
      • 受子表单动态列数影响,响应列数默认配置了25列按顺序对应25个字段,如查询语句结果和子表单都超过25列则需要联系开发者调整插件字段配置;

 

三、心得分享

插件开发感受:

  • 插件开发平台内置的依赖库目前比较少,以python语言mysql数据库依赖库为例(mongo库亦如此),目前仅有pymysql库,此库相比支持orm的sqlalchemy库有较多使用上的不便;期望将来能支持更多python环境库,包含对接oss,es,hadoop,hbase等外部环境的插件
  • 开发环境python3.6缩进是默认2个字符,相比pycharm默认的4个字符缩进有些难受,遇到几次因为缩进换行问题代码调试无结果,在排查错误方面不是很方便;期望可以在有利于代码调试方面做一些改善;
  • 输入参数方面,期望增加子表单(也就是对象数组)作为输入参数,能够解决一些子表单整列/整个子表加工处理需求
分享扩散:

沙发
发表于 2022-11-11 09:13:49
15
怎样操作子表单?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表