1
Bingchunmoli 2023-06-10 20:04:22 +08:00 via Android
顶级的单文件编程
|
2
xiangyuecn 2023-06-10 21:03:24 +08:00
@Bingchunmoli 一个入口不代表只是一个文件,/endpoint/method1 换成 /endpoint?method=method1 而已
|
3
sleepybear1113 2023-06-10 21:29:56 +08:00
每个页面的数据难道不都是后端给的么,怎么查的,就怎么取?比如查的时候转为 list<List<Object>>存内存或者 Redis ,通过 key 获取,然后写 Excel 。接口传参就是穿 key 就行了。数据表头的话,动态拼 SQL ,总得有映射吧,或者数据库就是中文字段?
|
4
shalk 2023-06-10 21:33:33 +08:00
问题 3 ,也很简单,是哪个页面也让前端传
|
5
wangkun025 2023-06-10 21:35:23 +08:00
看到这种需求,脑子就嗡嗡的。
|
6
javak 2023-06-10 22:53:05 +08:00 via iPhone
付费的话,我可以教你
|
7
hhjswf 2023-06-10 22:56:18 +08:00 via Android
让前端去调分页接口,page=-1 代表不分页,前端生成 csv 填充数据😄
|
8
SJH0402 OP @sleepybear1113 存 redis 是个解决方案,感觉有可行性。数据库不是中文字段,老哥说的映射具体指哪里呢
|
10
SJH0402 OP @wangkun025 脑子嗡了一下午也没想出来怎么解决
@javak 感谢老哥,不过暂时还不太需要 @hhjswf 在前端生成 csv 吗,也跟同事沟通过这个问题,因为本身表头数据和页面数据就在前端,直接拿来用就好,不过好像在前端无法导出图片数据?听同事这么提了一句,也没细问 |
11
wangkun025 2023-06-11 00:21:43 +08:00
我不是前端,但之前这事是前端自己做的,后端没参与。
所以按照我的理解,让前端自己想办法。 如果前端搞不定,需要后端写成一个文件的话,那就生成 excel 文件,给前端链接,让该文件可以下载就可以了。但这事不能即时下载,需要搞个下载中心,后端异步生成 excel 文件。 总之,我觉得这个需求很扯淡。 |
12
facebook47 2023-06-11 07:29:05 +08:00 via Android
easyexcel
|
13
Bingchunmoli 2023-06-11 09:14:25 +08:00 via Android
@xiangyuecn 一个原理,一个效果,所以是顶级大文件编程
|
14
totoro52 2023-06-11 10:35:21 +08:00
为什么要写成一个接口? 不理解。 我们是写了一个 base 的 controller 和 service 方法, 所有模块继承他, 就拥有导出的功能了,如果单个模块需要扩展他的导出就实现继承的方法即可,这样不是更灵活吗?
|
15
totoro52 2023-06-11 10:40:16 +08:00
单纯你的文字无法推断出你们的系统字段是否可以自定义
向我们系统的字段全部都可以自定义,所以只需给出模块名然后去数据库查中文和字段即可, 然后在从数据库拉出来转成 map 直接对应取即可 |
16
SJH0402 OP @totoro52 因为后台页面已经比较多了,一个个去继承的话有点麻烦。另外老哥是如何根据不同的模块名去调用不同的服务查询数据库的,if else 判断吗
|
17
totoro52 2023-06-11 15:11:05 +08:00
@SJH0402 #16
没有用到 if else 我们使用的是 ES ,根据定义好的枚举类去检索对应的 mapping 名即可 如果你是 mysql+myabtis , 可以返回 map , 然后根据字段中文名去匹配,填充表格 可以反射 获取他的注解和属性名,然后用${}传进去,具体实现起来还是挺复杂的,看你们业务把 |
18
siweipancc 2023-06-11 16:56:18 +08:00 via iPhone
自定义注解结合 entityMeta 即可
重要的是分页查询的数据传递,这个必须调用 entitymanager 动态传递 class 跟分页参数 然后丢给 easyexcel 该干嘛干嘛 |