包含以下模块: - antdv-next-admin: Vue 3 + TypeScript + Ant Design Vue 管理后台 - 设备/许可证/配件/耗材 CRUD 管理页面 - 基础数据管理 (分类/位置/制造商/型号/供应商) - 业务管理 (故障报修/盘点/资产分配/资产申请/交易记录) - 下拉选项改造 (ID输入框 → 搜索下拉选择) - 资产状态字典化 (接入sys_dict系统) - 界面文案优化 (设备→资产, 在库/在用/维修中/已报废) - 修复 console 警告 (popupClassName, 重复组件注册) - our-itam: Java Spring Boot + magic-api 后端服务 - fantastic-admin: 前端底层框架 (pnpm monorepo) - ciyo-itasset: CIYO 资产模块 - magic-script-skill: Claude Code skill 定义 - .claude: 对话历史记录 Co-Authored-By: Claude Code <noreply@anthropic.com>
2.6 KiB
2.6 KiB
Lambda表达式与异步调用
Lambda表达式
映射(map)
var list = [
{sex : 0,name : '小明',age : 19},
{sex : 1,name : '小花',age : 18}
];
var getAge = (age) => age > 18 ? '成人' : '未成年'
return list.map(item => {
age : getAge(item.age),
sex : item.sex == 0 ? '男' : '女',
name : item.name
});
// 结果:[{sex: "男", name: "小明", age: "成人"}, {sex: "女", name: "小花", age: "未成年"}]
过滤(filter)
var list = [
{sex : 0,name : '小明'},
{sex : 1,name : '小花'}
]
return list.filter(item => item.sex == 0);
// 结果:[{sex: 0, name: "小明"}]
过滤+映射(filter + map)
var list = [
{sex : 0,name : '小明'},
{sex : 1,name : '小花'}
]
return list.filter(item => item.sex == 0).map(item => {
sex : item.sex == 0 ? '男' : '女',
name : item.name
});
// 结果:[{sex: "男", name: "小明"}]
分组(group)
默认聚合为List
var result = [
{ xxx : 1, yyy : 2, value : 11},
{ xxx : 1, yyy : 2, value : 22},
{ xxx : 2, yyy : 2, value : 33}
];
return result.group(item => item.xxx + '_' + item.yyy)
// 结果:{"1_2": [{...}, {...}], "2_2": [{...}]}
自定义聚合对象
return result.group(item => item.xxx + '_' + item.yyy,list => {
count : list.size(),
sum : list.map(v=>v.value).sum(),
avg : list.map(v=>v.value).avg()
})
// 结果:{"1_2": {"avg": 16.5, "count": 2, "sum": 33}, "2_2": {"avg": 33, "count": 1, "sum": 33}}
关联(join)
var year2019 = [
{ "pt":2019, "item_code":"code_1", "sum_price":2234 },
{ "pt":2019, "item_code":"code_2", "sum_price":234 }
];
var year2018 = [
{ "pt":2018, "item_code":"code_1", "sum_price":1234.0 }
];
return year2019.join(year2018, (left, right) => left.item_code == right.item_code, (left, right) => {
'年份' : left.pt,
'编号' : left.item_code,
'今年' : left.sum_price,
'去年' : right == null ? 'unknow' : right.sum_price
});
异步调用
普通方法
// 使用async关键字,会启动一个线程去执行,返回Future
var user1 = async db.select("select * from sys_user where id = 1");
var user2 = async db.select("select * from sys_user where id = 2");
// 调用get方法表示阻塞等待获取结果
return [user1.get(),user2.get()];
lambda
var list = [];
for(index in range(1,10)){
// 当异步中使用外部变量时,为了确保线程安全的变量,可以将其放在形参中
list.add(async (index)=>db.select("select * from sys_user where id = #{index}"));
}
return list.map(item=>item.get());