# autoprinter **Repository Path**: zhaoyan_2020/autoprinter ## Basic Information - **Project Name**: autoprinter - **Description**: ESC/POS热敏网口打印机 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2021-04-30 - **Last Updated**: 2025-06-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # autoprinter说明文档 > 该说明文档介绍代码结构、类说明和功能以及接口 [TOC] ## 1. 程序基本流程 这里的数据库分为Oracle数据库和hsqlDb数据库。其中Oracle数据库是提供拣货单数据,同时记录拣货单打印状态;hsqlDb数据库用于辅助程序缓存拣货单数据避免程序中断丢失拣货单,主要记录拣货单打印状态。 *备注:这里hsqldb为内置数据库,无需启动* ![自动打印系统流程](img/自动打印系统.png) ## 2. 程序目录结构 ![1620266916072](img/1620266916072.png) ![1620266993612](img/1620266993612.png) ## 3. 类说明 ### 3.1 GpdemoApplication.java 说明:SpringBoot启动类 ### 3.2 WebSocketConfig.java 说明:WebSocket配置类 ### 3.3 PageController.java 说明: html页面控制层 | url | html文件 | | ------------- | ------------ | | / | index.html | | /printer/{ip} | printer.html | ### 3.4 PrinterController.java 说明:http调用控制层 | url | 功能 | | -------------------------- | -------------------------------------------- | | post:/printer/start | 启动所有的打印机进程 | | post:/printer/stop | 停止所有的打印机进程 | | post:/printer/start/{ip} | 启动地址为ip的打印机进程 | | post:/printer/stop/{ip} | 停止地址为ip的打印机进程 | | post:/reprint/{ip}/{msgId} | 地址为ip的打印机重新打印编号为msgId的拣货单 | | post:/add/{ip1}/{ip2} | 地址为ip2的打印机打印地址为ip1的打印任务 | | post:/remove/{ip1}/{ip2} | 地址为ip2的不再打印机打印地址为ip1的打印任务 | | get:/status | 获取所有的打印机的状态 | | get:/status/{ip} | 获取地址为ip的打印机状态 | ### 3.5 HsqldbDao.java 说明:数据库操作 | 方法 | 接收参数 | 返回数据 | 说明 | | ------------- | ------------------------------------------------------------ | --------------- | ---------------------------------------------- | | findTask | int status, String warehouseCode,String stockCode | List | 获取状态为status的拣货单 | | updateTask | int status, String warehouseCode,String stockCode | int:0后者1 | 修改拣货单状态 | | insertTask | PrintTask task | int:0后者1 | 插入任务,同时设置任务的主键id | | findTaskNum | int status, String warehouseCode,String stockCode,String lastTime | int:0后者1 | 获取lastTime时间之后的的状态为status拣货单数量 | | findHistory | String warehouseCode,String stockCode,int start,int num | List | 获取历史打印任务 | | deleteHistory | String lastTime | int:0后者1 | 删除lastTime之前的打印任务 | ### 3.6 BasePrintTaskData.java*(未修改)* 说明:打印任务实体 ### 3.7 Printer.java 说明:打印机功能类,方法说明见代码注释 ### 3.8 PrintTask.java 说明:打印任务实体,在BasePrintTaskData基础上进行修改,与hsqldb数据库表对应 ### 3.9 Status.java 说明:ESC/POS打印机状态实体 ### 3.10 PrintHandle.java*(未修改)* ### 3.11 QuieeDirectPrintJobJava*(未修改)* ### 3.12 ESCPrinter.java 说明:ESC/POS打印机功能封装类 | 主要方法 | 说明 | | ------------- | --------------------------------- | | PrinterStatus | 获取打印机状态 | | printMessage | 通过ESC/POS指令打印打印任务的标识 | | printNumber | 通过ESC/POS指令打印打印任务的数量 | ### 3.13 Internet.java 说明:socket封装类 ### 3.14 PrinterService.java 说明:管理各个打印机进程的类,封装了控制打印机的方法,方法说明见类注释 ### 3.15 WebSocketService.java 说明:webSocket服务层,用于记录各个websocket连接以及发送和接收消息 ### 3.16 HttpApi.java*(增加了部分方法)* 说明:封装http的post请求,用于获取拣货单信息和修改拣货单状态 ### 3.17 PropertiesUtil.java*(未修改)* ## 4. 文件夹说明 ### 4.1 static 说明:存储js,css文件 ### 4.2 templates 说明:html模板 ### 4.3 config 说明:application.properties为程序的配置文件,如果打包,需要将该目录存放至jar包或war包相同目录,将会优先读取该目录下的配置文件,同时可以在不重新打包情况下修改配置文件 ### 4.4 db 说明:hsqldb数据库存储目录,如果打包后,该目录将与jar包或者war包相同目录 ### 4.5 lib 说明:maven的本地依赖 ## 5. 程序运行 ### 4.1 Eclipse运行 需要配置VM参数,然后运行启动类GpdemoApplication.java即可 > 说明:该参数是为了让报表软件可以获取本地打印机设备 ![1620350794347](img/1620350794347.png) ### 4.2 JAR包运行 在Eclipse里面选择pom.xml文件,右键文件,选择Run As -> Maven install。打包结束后,在target文件下将找到gpdemo-0.0.1-SNAPSHOT.jar文件,在新的文件夹下创建如下目录,其中config和db可以直接从项目目录下复制过来 ![1620351523466](img/1620351523466.png) 在该目录下运行"java -jar gpdemo-0.0.1-SNAPSHOT.jar" ![1620351721119](img/1620351721119.png)