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

loadDetail
// 调用
@loadDetail($src, $fieldId, $strTableName, $key, $target, $other, $systemId)



/**
 * loadDetail
 *
 * @param $src:list:源列表
 * @param $fieldId:string:源列表主键
 * @param $strTableName:string:明细数据表
 * @param $key:string:明细数据表外键
 * @param $target:string:源列表目标属性
 * @param $other:map:其它条件
 * @param $systemId:string:系统ID
 *
 * @return list:加工后的源列表
 *
 */
#function loadDetail($src, $fieldId, $strTableName, $key, $target, $other, $systemId)
	// 参数处理
	#if ($vs.util.isNull($other))
		#set($other = $vs.util.newMap())
	#end

	// 数据收集
	#set($ids = @collectSet($src, $fieldId))
	// 查询条件
	$where.put($key, $ids)

	// 列表数据
	#set($list = $vs.util.newList())
	#if ($vs.util.isString($systemId))
		#set($list = @remoteList($strTableName, '*', $where))
	#else
		#set($list = $vs.dbTools.select($strTableName, $where))
	#end


	// 列表分组
	#set($group = @list2group($list, $key))
	// 数据组装
	@listPut($src, $group, $fieldId, $target)

	// 初始化默认值
	#foreach ($row in $src)
		#if (!$vs.util.isList($row.get($target)))
			$row.put($target, $vs.util.newList())
		#end
	#end

	// 返回
	return $src
#end



/**
 * collectSet
 * 集合数据收集list实现:判空、去重
 *
 * @param $list:list:列表
 * @param $fieldId:string:字段
 *
 * @return list
 *
 */
#function collectSet($list, $fieldId)
	#set($result = $vs.util.newList())
	#if (!$vs.util.isList($list))
		return $result
	#end
	#set($set = $vs.util.newList())
	#foreach($row in $list)
		#set($value = $row)
		#if ($vs.util.isNotNull($fieldId))
			#set($value = $row.get($fieldId))
		#end
		#if ($vs.util.isNotNull($value) and !$set.contains($value))
			$result.add($value)
			$set.add($value)
		#end
	#end
	return $result
#end

/**
 * remoteList
 *
 * @param $systemId:string:系统ID
 * @param $strTableName:string:表
 * @param $strColumns:string:字段
 * @param $where:map:条件
 *
 * @return list
 *
 */
#function remoteList($systemId, $strTableName, $strColumns, $where)
	#set($strSql = `
		select
			${$strColumns}
		from
			${strTableName}
		where 1 = 1
	`)
	#set($strSql = @andWhere($where))
	return $vs.dbTools.remoteList($systemId, $strSql ,$where)
#end

/**
 * list2group
 * 
 * @param $list:list:源列表
 * @param $fieldId:string:分组属性
 *
 * @return map 
 *
 */ 
#function list2group($list, $fieldId)
	#set($group = $vs.util.newMap())
	#if($vs.util.isBlankOne($list, $fieldId))
		return $group
	#end
	#foreach($item in $list)
		#set($fieldValue = $item.get($fieldId))
		#set($list = $group.get($fieldValue))
		#if (!$vs.util.isList($list))
			#set($list = $vs.util.newList())
			$group.put($fieldValue, $list)
		#end
		$list.add($item)
	#end
	return $group
#end

/**
 * listPut
 *
 * @param $list:list:列表
 * @param $dataMap:map:需要组装到列表的数据映射
 * @param $keyFieldId:string:数据映射属性ID
 * @param $dataFieldId:string:组装数据属性ID
 *
 * @return list
 *
 */ 
#function listPut($list, $dataMap, $keyFieldId, $dataFieldId)
	#if ($vs.util.isBlankOne($list, $dataMap, $keyFieldId))
		return $list
	#end
	#if ($vs.util.isNull($dataFieldId))
		#set($dataFieldId = 'data')
	#end
	#foreach($item in $list)
		#set($fieldValue = $item.get($keyFieldId))
		#set($data = $dataMap.get($fieldValue))
		$item.put($dataFieldId, $data)
	#end
	return $list
#end
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值