From 8632276d484d8ff1bf1245a19ef7adefbb4e69a4 Mon Sep 17 00:00:00 2001 From: zhousq Date: Fri, 26 Jul 2024 16:01:35 +0800 Subject: [PATCH] =?UTF-8?q?2024-07-25=20=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 167 +++++++++++++++++++++++++++--------------------------- img.png | Bin 0 -> 16591 bytes img_1.png | Bin 0 -> 12556 bytes 3 files changed, 83 insertions(+), 84 deletions(-) create mode 100644 img.png create mode 100644 img_1.png diff --git a/README.md b/README.md index 15567df..013cb3e 100644 --- a/README.md +++ b/README.md @@ -8,95 +8,94 @@

+#技术方案 -## 平台简介 +##方案介绍 + 轻量级独立的打印服务,用于打印集中管理,远程打印服务,提供远程接口访问,打印任务下发,打印日志,打印方案配置,模版管理,是否用户鉴权(IP校验、客户端ID)的能力 -一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间开始自己写了一套后台系统。如此有了若依。她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。 +#核心内容 + 1、打印服务模块:使用JPS进行无状态的打印任务下发; + 2、服务接口:提供rest接口,通过接口调用进行打印数据、打印任务的创建;任务创建的结果反馈 + 3、打印日志:打印任务的创建、模版、数据、方案配置等历史记录的查询和补打 + 4、模版管理:设置打印的模版、纸张类型、打印参数等配置 -性别男,若依是给女儿取的名字(寓意:你若不离不弃,我必生死相依) +#架构图 -若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。 + 技术路线: + 若依单体框架-最新班4.7.9-springboot3版本 + springBoot 3.3.1 + springboot-freemarker-3.3.1 + com.itextpdf-5.5.13 + com.google.zxing-3.5.3 + ueeditor + jdk17版本 -* 前后端分离版本,请移步[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue),微服务版本,请移步[RuoYi-Cloud](https://gitee.com/y_project/RuoYi-Cloud) -* 感谢 [hplus](https://gitee.com/hplus_admin/hplus) 后台主题 UI 框架。 -* 阿里云折扣场:[点我进入](http://aly.ruoyi.vip),腾讯云秒杀场:[点我进入](http://txy.ruoyi.vip)   -* 阿里云优惠券:[点我领取](https://www.aliyun.com/minisite/goods?userCode=brki8iof&share_source=copy_link),腾讯云优惠券:[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console)   +系统结构图 + ![img.png](img.png) +系统功能 + ![img_1.png](img_1.png) -## 内置功能 +模版的说明 +目前系统只支持thymeleaf的模版、freemarker和纯html的模版渲染打印 -1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 -2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 -3. 岗位管理:配置系统用户所属担任职务。 -4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 -5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 -6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 -7. 参数管理:对系统动态配置常用参数。 -8. 通知公告:系统通知公告信息发布维护。 -9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 -10. 登录日志:系统登录日志记录查询包含登录异常。 -11. 在线用户:当前系统中活跃用户状态监控。 -12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 -13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 -14. 系统接口:根据业务代码自动生成相关的api接口文档。 -15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 -16. 缓存监控:对系统的缓存查询,删除、清空等操作。 -17. 在线构建器:拖动表单元素生成相应的HTML代码。 -18. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 +基础配置说明: +外置模版路径配置:aplication.yml win.path.template 路径 默认当前应用路径下/models +客户端编码设置 : aplication.yml win.clientCode 多客户端端时配置,服务根据此编码获取打印任务 +数据字典: +模版类型 :系统内置(CLASS),文件路径(FILE),数据模版(STRING) +系统内置:集成在系统class目录中,不能修改 +文件路径:可配置模版的存储路径 +数据模版:存储在数据库中的字符串模版 +参数类型:STRING 字符串 ,QRIMG,二维码类型(系统将吧传入的内容转换成Base64格式的二维码图片) +接口说明: +/service/print/model +post 方法 +参数说明 +/**客户端编码-目标打印机的客户端*/ +private String clientCode; +/**要打印的数据集合,根据配置的打印模版参数,参数编码需要和配置一致,*/ +private List printData; +/** +* 模版编码 使用的模版编码,如果为空,则使用配置的默认模版,如果不为空优先使用传入的模版编号 +* */ + private String modelCode; + /** +* 单页模式还是多页模式,默认1单页单任务,多条数据时所有数据合成一个页面打印; 2 一条数据一个打印文件 +* */ + private String docModel="1"; + /** +* 打印机名称必须传 +* */ + private String printerName; + /** +* 计划打印时间, +* */ + private String printDate; + /**任务ID +* */ + private String taskId; + /**打印类型 +* */ + private String printType; + /**打印分数 +* */ + private Integer copyCount; + 请求格式样例: + {"clientCode":"node_001", + "modelCode":"test_file_model001", + "docModel":"1", 不传默认为1 + "printerName":"大厅 (HP Color LaserJet MFP M277dw)", + "printType":"code", 不传默认为空 + “printTime”:“2024-07-25 ” ,不传默认为当前系统时间 + copyCount:1 不传默认为1 + "printData":[根据模版的参数进行设置,支持多条数据]} -## 在线体验 - -- admin/admin123 -- 陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。 - -演示地址:http://ruoyi.vip -文档地址:http://doc.ruoyi.vip - -## 演示图 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -## 若依交流群 - -QQ群: [![加入QQ群](https://img.shields.io/badge/已满-1389287-blue.svg)](https://jq.qq.com/?_wv=1027&k=5HBAaYN) [![加入QQ群](https://img.shields.io/badge/已满-1679294-blue.svg)](https://jq.qq.com/?_wv=1027&k=5cHeRVW) [![加入QQ群](https://img.shields.io/badge/已满-1529866-blue.svg)](https://jq.qq.com/?_wv=1027&k=53R0L5Z) [![加入QQ群](https://img.shields.io/badge/已满-1772718-blue.svg)](https://jq.qq.com/?_wv=1027&k=5g75dCU) [![加入QQ群](https://img.shields.io/badge/已满-1366522-blue.svg)](https://jq.qq.com/?_wv=1027&k=58cPoHA) [![加入QQ群](https://img.shields.io/badge/已满-1382251-blue.svg)](https://jq.qq.com/?_wv=1027&k=5Ofd4Pb) [![加入QQ群](https://img.shields.io/badge/已满-1145125-blue.svg)](https://jq.qq.com/?_wv=1027&k=5yugASz) [![加入QQ群](https://img.shields.io/badge/已满-86752435-blue.svg)](https://jq.qq.com/?_wv=1027&k=5Rf3d2P) [![加入QQ群](https://img.shields.io/badge/已满-134072510-blue.svg)](https://jq.qq.com/?_wv=1027&k=5ZIjaeP) [![加入QQ群](https://img.shields.io/badge/已满-210336300-blue.svg)](https://jq.qq.com/?_wv=1027&k=5CJw1jY) [![加入QQ群](https://img.shields.io/badge/已满-339522636-blue.svg)](https://jq.qq.com/?_wv=1027&k=5omzbKc) [![加入QQ群](https://img.shields.io/badge/已满-130035985-blue.svg)](https://jq.qq.com/?_wv=1027&k=qPIKBb7s) [![加入QQ群](https://img.shields.io/badge/已满-143151071-blue.svg)](https://jq.qq.com/?_wv=1027&k=4NsjKbtU) [![加入QQ群](https://img.shields.io/badge/已满-158781320-blue.svg)](https://jq.qq.com/?_wv=1027&k=VD2pkz2G) [![加入QQ群](https://img.shields.io/badge/已满-201531282-blue.svg)](https://jq.qq.com/?_wv=1027&k=HlshFwkJ) [![加入QQ群](https://img.shields.io/badge/已满-101526938-blue.svg)](https://jq.qq.com/?_wv=1027&k=0ARRrO9V) [![加入QQ群](https://img.shields.io/badge/已满-264355400-blue.svg)](https://jq.qq.com/?_wv=1027&k=up9k3ZXJ) [![加入QQ群](https://img.shields.io/badge/已满-298522656-blue.svg)](https://jq.qq.com/?_wv=1027&k=540WfdEr) [![加入QQ群](https://img.shields.io/badge/已满-139845794-blue.svg)](https://jq.qq.com/?_wv=1027&k=ss91fC4t) [![加入QQ群](https://img.shields.io/badge/已满-185760789-blue.svg)](https://jq.qq.com/?_wv=1027&k=Cqd66IKe) [![加入QQ群](https://img.shields.io/badge/已满-175104288-blue.svg)](https://jq.qq.com/?_wv=1027&k=7FplYUnR) [![加入QQ群](https://img.shields.io/badge/已满-174942938-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=lqMHu_5Fskm7H2S1vNAQTtzAUokVydwc&authKey=ptw0Fpch5pbNocML3CIJKKqZBaq2DI7cusKuzIgfMNiY3t9Pvd9hP%2BA8WYx3yaY1&noverify=0&group_code=174942938) [![加入QQ群](https://img.shields.io/badge/287843737-blue.svg)](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=blYlRDmwZXSXI5pVrPPU7ZJ1stFJ6Q2Q&authKey=ForGBWffHVlPt9NE3d7g4DoOIouBh%2BqvAj2lp1CLReHfZAUaK7SRrdwsChKpRJDJ&noverify=0&group_code=287843737) \ No newline at end of file +文档打印接口 +/service/print/doc +POST方法 +参数说明 MultipartFile file:打印的文件 +String clientCode, /**客户端编码-目标打印机的客户端*/ +String printerName, 打印机名称必须传 +String printType,不传默认为空 +String printTime,计划打印时间,不传默认为当前系统时间 +Integer copyCounts 打印数量不传默认为1 \ No newline at end of file diff --git a/img.png b/img.png new file mode 100644 index 0000000000000000000000000000000000000000..13463d5035aec58652b3a63802010c7a52364768 GIT binary patch literal 16591 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 literal 0 HcmV?d00001