当前位置: 首页 > news >正文

谷神后端$vs.proc.invoke.stock.loadMap

loadMap
// 调用
@loadMap($src, $field, $strTableName, $key, $target, $other, $systemId)/*** loadMap* 加载map。** @param $src:list:列表。* @param $field:string:参数域。* @param $strTableName:string:数据表名。* @param $key:string:键。* @param $target:string:落地属性。* @param $other:map:其它条件。* @param $systemId:string:系统id。** @return list:加载数据后的列表。**/
#function loadMap($src, $field, $strTableName, $key, $target, $other, $systemId)// 参数处理#set($where = $vs.util.newMap())#if ($vs.util.isMap($other))$where.putAll($other)#end// 数据收集#set($fields = @collectSet($src, $field))// 查询条件$where.put($key, $fields)// 列表数据#set($list = $vs.util.newList())#if ($vs.util.isString($systemId))#set($list = @remoteList($systemId, $strTableName, '*', $where))#else#set($list = $vs.dbTools.select($strTableName, $where))#end// 列表分组#set($map = @list2map($list, $key, null))// 数据组装@listPut($src, $map, $field, $target)// 初始化默认值#foreach ($row in $src)#if (!$vs.util.isMap($row.get($target)))$row.put($target, $vs.util.newMap())#end#end// 返回return $src
#end/*** collectSet* 集合数据收集list实现:判空、去重。** @param $list:list:列表。* @param $field:string:字段。** @return list**/
#function collectSet($list, $field)#if ($vs.util.isList($list))#set($result = $vs.util.newList())#set($set = $vs.util.newList())#foreach($row in $list)#set($value = $row)#if ($vs.util.isNotNull($field))#set($value = $row.get($field))#end#if ($vs.util.isNotNull($value) and !$set.contains($value))$result.add($value)$set.add($value)#end#endreturn $result#endreturn null
#end/*** remoteList* 远程列表。** @param $systemId:string:系统id。* @param $strTableName:string:表。* @param $strColumns:string:字段。* @param $where:map:条件。** @return list:列表。**/
#function remoteList($systemId, $strTableName, $strColumns, $where)#if ($vs.util.isBlankOne($strTableName, $systemId))return null#end#if ($vs.util.isNull($strColumns))#set($strColumns = ' * ')#end#set($strSql = `select${$strColumns}from${strTableName}where 1 = 1`)#set($strSql = $strSql + @andWhere($where))return $vs.dbTools.remoteList($systemId, $strSql ,$where)
#end/*** andWhere* 条件。* * @param $where:map:条件** @return string:sql。**/
#function andWhere($where)#set($sql = '')#if ($vs.util.isMap($where))#foreach ($key in $vs.util.getMapKeys($where))#set($value = $where.get($key))#if ($vs.util.isList($value))#set($sql = $sql + " and " + $vs.sqlHelper.listIn($value, $key))#else#set($sql = $sql + $vs.sqlHelper.and($where, $key))#end#end#endreturn $sql
#end/*** list2map* list转map:支持全量映射、单字段映射。* * @param $list:list:列表。* @param $key:string:键字段域。* @param $field:string:值字段域。** @return map**/ 
#function list2map($list, $key, $field)#if ($vs.util.isList($list))#set($map = $vs.util.newMap())#foreach($row in $list)#set($value = $row)#if (!$vs.util.isNull($field))#set($value = $row.get($field))#end$map.put($row.get($key), $value)#endreturn $map#endreturn null
#end/*** listPut* 数据组装。** @param $list:list:列表。* @param $map:map:映射。* @param $key:string:键。* @param $field:string:域。** @return null**/ 
#function listPut($list, $map, $key, $field)#if ($vs.util.isList($list) and $vs.util.isMap($map) and $vs.util.isString($key))#if ($vs.util.isNull($field))#set($field = 'data')#end#foreach($item in $list)#set($itemKey = $item.get($key))#set($data = $map.get($itemKey))$item.put($field, $data)#end#endreturn null
#end

相关文章:

  • ngxin
  • FileLink跨网文件传输 | 一站式跨网文件交换平台,重塑企业信息流通生态!
  • mysql数据库的基本管理
  • ansible实用模块
  • LLM基础概念:Prompt
  • Desmos图形计算器分段函数
  • SpringBoot日志详解
  • 传输大咖47 | 软件企业文件传输难题?这款FTP替代工具了解一下
  • python/爬虫技术/lxml工具介绍/XML和HTML解析
  • LVS-DR实战案例,实现四层负载均衡
  • TomCat乱码问题
  • EasyAR自定义相机RTSP视频流(CustomCamera)
  • 【UR #1】外星人(dp思维技巧)
  • Java项目: 基于SpringBoot+mybatis+maven+vue图书进销存管理系统分前后台(含源码+数据库+毕业论文)
  • Linux开机logo设置
  • 2019年如何成为全栈工程师?
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Docker 笔记(2):Dockerfile
  • Java读取Properties文件的六种方法
  • js操作时间(持续更新)
  • js数组之filter
  • k个最大的数及变种小结
  • Mysql优化
  • Nacos系列:Nacos的Java SDK使用
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • windows下mongoDB的环境配置
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 程序员最讨厌的9句话,你可有补充?
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 批量截取pdf文件
  • 微信开放平台全网发布【失败】的几点排查方法
  • 微信小程序:实现悬浮返回和分享按钮
  • 详解移动APP与web APP的区别
  • 优秀架构师必须掌握的架构思维
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 容器镜像
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​Python 3 新特性:类型注解
  • # Kafka_深入探秘者(2):kafka 生产者
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • $NOIp2018$劝退记
  • (12)Hive调优——count distinct去重优化
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (zhuan) 一些RL的文献(及笔记)
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (二)原生js案例之数码时钟计时
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)