package com.utils;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import com.bean.Sell;
public class Print implements Printable{
private static String TITLE;//标题
private static String ORDERNO;//单号
private static String STORENAME;//门店
private static String CASHIER;//收银员
private static String CASH;//总现金
private static String PAYMENT;//支付方式
private static String USERNAME;//会员名称
private static String TEL;//客服电话
private static String ADDRESS;//地址
private static List<Sell> Goodsinfo;
private static void chushihua(String orderNo, String storeName, String cashier, String cash, String payment, String userName, String tel, String address,List<Sell> goodsinfo){
TITLE ="收银小票";
ORDERNO =orderNo;
STORENAME =storeName;
CASHIER =cashier;
CASH =cash;
PAYMENT =payment;
USERNAME =userName;
TEL =tel;
ADDRESS =address;
Goodsinfo =goodsinfo;
}
/**
* 用于将商品零售进行进行打印
*/
public void printSheet(String orderNo, String storeName, String cashier, String cash, String payment, String userName, String tel, String address, List<Sell> Goodsinfo) {
chushihua(orderNo,storeName, cashier, cash, payment, userName, tel, address, Goodsinfo);
// 通俗理解就是书、文档
Book book = new Book();
// 设置成竖打
PageFormat pf = new PageFormat();
pf.setOrientation(PageFormat.PORTRAIT); //LANDSCAPE表示横打;PORTRAIT表示竖打;REVERSE_LANDSCAPE表示打印空白
// 通过Paper设置页面的空白边距和可打印区域。必须与实际打印纸张大小相符。
Paper p = new Paper();
int length = printSize(Goodsinfo);//加值参数为115,增加行数需要增加高度
System.out.println("Paper length is:"+length);
p.setSize(165, length); // 纸张大小A4纸(595, 842),经测试58mm为165
p.setImageableArea(5, 5, 155, length); //设置打印区域,A4纸的默认X,Y边距是72
//x - 用来设置此 paper 可成像区域左上角的 x 坐标
//y - 用来设置此 paper 可成像区域左上角的 y 坐标
//width - 用来设置此 paper 可成像区域宽度的值
//height - 用来设置此 paper 可成像区域高度的值
pf.setPaper(p);
// 把 PageFormat 和 Printable 添加到书中,组成一个页面
book.append(new Print(), pf);
// 获取打印服务对象
PrinterJob job = PrinterJob.getPrinterJob();
// 设置打印类
job.setPageable(book);
try {
// // 可以用printDialog显示打印对话框,在用户确认后打印;也可以直接打印
// if (a) {
job.print();
// }
} catch (PrinterException e) {
e.printStackTrace();
}
}
public static Integer printSize(List<Sell> goodsArray) {
int height = 200;//加值参数为140,增加行数需要增加高度
if (goodsArray.size() > 0) {
height += goodsArray.size()*10;
for(int i=0;i<goodsArray.size();i++){
goodsArray.get(i).getDrugname();
//String[] goods = goodsArray[i].split(",");
if(goodsArray.get(i).getDrugname().length()>8){//名称超11个字,换行
height += 10;
}
}
}
return height;
}
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
try {
/**
* * @param Graphic指明打印的图形环境
* PageFormat指明打印页格式(页面大小以点为计量单位,
* 1点为1英寸的1/72,1英寸为25.4毫米。A4纸大致为595×842点) *
* @param pageIndex指明页号
**/
// 转换成Graphics2D
Graphics2D g2d = (Graphics2D) graphics;
// 设置打印颜色为黑色
g2d.setColor(Color.black);
// 打印起点坐标
switch (pageIndex) {
case 0:
String xuxian = "------------------------------------";
double x = pageFormat.getImageableX();
double y = pageFormat.getImageableY() + 10;
//设置打印字体(字体名称、样式和点大小)(字体名称可以是物理或者逻辑名称)
Font fontTitle = new Font("新宋体", Font.BOLD, 10);
g2d.setFont(fontTitle); // 设置字体
//打印标题
g2d.drawString(TITLE, (float) x + 40, (float) y);
y += fontTitle.getSize2D()+4;
Font fontContent = new Font("新宋体", Font.PLAIN, 7);
g2d.setFont(fontContent); //设置字体
//打印 订单号
g2d.drawString("单号:" + ORDERNO, (float) x, (float) y);
y += fontContent.getSize2D()+4;
g2d.drawString("门店:" + STORENAME, (float) x, (float) y);
y += fontContent.getSize2D()+4;
g2d.drawString("收银员:" +CASHIER, (float) x, (float) y);
y += fontContent.getSize2D()+4;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
g2d.drawString("时间:" + format.format(new Date()), (float) x, (float) y);
y += fontContent.getSize2D()+4;
g2d.drawString(xuxian, (float) x, (float) y);
y += fontContent.getSize2D()+2;
g2d.drawString("名称", (float) x, (float) y);
g2d.drawString("数", (float) x + 70, (float) y);
//g2d.drawString("积分单", (float) x + 80, (float) y);
g2d.drawString("现金单", (float) x + 110, (float) y);
y += fontContent.getSize2D()+2;
g2d.drawString("量", (float) x + 70, (float) y);
//g2d.drawString("价", (float) x + 80, (float) y);
g2d.drawString("价", (float) x + 110, (float) y);
y += fontContent.getSize2D()+2;
@SuppressWarnings("unused")
Double totalCount = 0.0,totalPrice = 0.0 ;
for(int i=0;i<Goodsinfo.size();i++){
//String[] goods = GOODSARRAY[i].split(",");
totalCount += Double.valueOf(Goodsinfo.get(i).getCount());
//totalPrice += Double.valueOf(GOODSARRAY.get(i).getCount())*Double.valueOf(GOODSARRAY.get(i).get);
String goodsName = Goodsinfo.get(i).getDrugname().length()>8?Goodsinfo.get(i).getDrugname().substring(0, 8):Goodsinfo.get(i).getDrugname();
g2d.drawString((i+1) + "." + goodsName, (float) x, (float) y);
if(Goodsinfo.get(i).getDrugname().length()>8){//名称超8个字,换行
y += fontContent.getSize2D()+2;
g2d.drawString(Goodsinfo.get(i).getDrugname().substring(8), (float) x+7, (float) y);
}
if(Goodsinfo.get(i).getDrugname().length()>20){
y += fontContent.getSize2D()+2;
}
g2d.drawString(Goodsinfo.get(i).getAmount().toString(), (float) x + 70, (float) y);
//g2d.drawString(Goodsinfo.get(i).getJifen().toString(), (float) x + 80, (float) y);
g2d.drawString(Goodsinfo.get(i).getPrice().toString(), (float) x + 110, (float) y);
y += fontContent.getSize2D()+2;
}
g2d.drawString(xuxian, (float) x, (float) y);
y += fontContent.getSize2D()+2;
/*g2d.drawString("件数:"+totalCount, (float) x , (float) y);
y += fontContent.getSize2D()+2;*/
/*g2d.drawString("积分总计:"+ String.format("%.2f",Double.valueOf(INTEGRAL)), (float) x ,(float) y);
y += fontContent.getSize2D()+2;*/
g2d.drawString("现金总计:"+ String.format("%.2f",Double.valueOf(CASH)), (float) x, (float) y);
y += fontContent.getSize2D()+2;
g2d.drawString("支付方式:"+ PAYMENT, (float) x, (float) y);
y += fontContent.getSize2D()+2;
g2d.drawString("会员名称:"+ USERNAME, (float) x, (float) y);
y += fontContent.getSize2D()+2;
g2d.drawString(xuxian, (float) x, (float) y);
y += fontContent.getSize2D()+4;
String address = ADDRESS.length()>16?ADDRESS.substring(0,16):ADDRESS;
g2d.drawString("地址:" + address, (float) x, (float) y);
if(ADDRESS.length()>16){
y += fontContent.getSize2D()+2;
g2d.drawString(ADDRESS.substring(16), (float) x+20, (float) y);
}
y += fontContent.getSize2D()+2;
g2d.drawString("谢谢惠顾,祝您早日康复!!!", (float) x+22, (float) y);
y += fontContent.getSize2D()+2;
g2d.drawString("客服电话("+TEL+")", (float) x+25, (float) y);
y += fontContent.getSize2D()+10;
return PAGE_EXISTS;
default:
return NO_SUCH_PAGE;
}
} catch (Exception e) {
e.printStackTrace();
}
return 0;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Java毕设-基于SSM框架的药品管理系统源码+数据库.zip
共360个文件
xml:79个
class:78个
jsp:66个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 195 浏览量
2024-06-27
15:58:33
上传
评论
收藏 24.9MB ZIP 举报
温馨提示
Java毕设——基于SSM框架的药品管理系统源码+数据库.zip 该项目是个人大作业项目源码,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!!!评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 Java毕设——基于SSM框架的药品管理系统源码+数据库.zip 该项目是个人大作业项目源码,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!!!评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。Java毕设——基于SSM框架的药品管理系统源码+数据库.zip 该项目是个人大作业项目源码,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!!!评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。Java毕设——基于SSM框架的药品管理系统源码+数据库.zip 该项目是个人大作业项目源
资源推荐
资源详情
资源评论
收起资源包目录
Java毕设-基于SSM框架的药品管理系统源码+数据库.zip (360个子文件)
SellService.class 10KB
SellService.class 10KB
StoreController.class 7KB
StoreController.class 7KB
Print.class 7KB
Print.class 7KB
ClerkController.class 7KB
ClerkController.class 7KB
JinhuoService.class 6KB
JinhuoService.class 6KB
LoginController.class 6KB
LoginController.class 6KB
Jinhuo.class 6KB
Jinhuo.class 6KB
DruginfoController.class 6KB
DruginfoController.class 6KB
StoreService.class 5KB
StoreService.class 5KB
Store.class 5KB
Store.class 5KB
JinhuoController.class 5KB
JinhuoController.class 5KB
RxService.class 4KB
RxService.class 4KB
SellController.class 4KB
SellController.class 4KB
Sellrecords.class 4KB
Sellrecords.class 4KB
Datetips.class 3KB
Datetips.class 3KB
DruginfoService.class 3KB
DruginfoService.class 3KB
Drug.class 3KB
Drug.class 3KB
RxController.class 3KB
RxController.class 3KB
Sell.class 3KB
Sell.class 3KB
Rxperson.class 3KB
Rxperson.class 3KB
Sellover.class 2KB
Sellover.class 2KB
LoginInterceptor.class 2KB
LoginInterceptor.class 2KB
StringPro.class 2KB
StringPro.class 2KB
Msg.class 2KB
Msg.class 2KB
Rxdrug.class 2KB
Rxdrug.class 2KB
Json.class 2KB
Json.class 2KB
ManagerService.class 2KB
ManagerService.class 2KB
SellMapper.class 2KB
SellMapper.class 2KB
StoreMapper.class 1KB
StoreMapper.class 1KB
RxpersonJson.class 1KB
RxpersonJson.class 1KB
DrugMapper.class 1020B
DrugMapper.class 1020B
Manager.class 961B
Manager.class 961B
JinhuoMapper.class 934B
JinhuoMapper.class 934B
RxdrugMapper.class 656B
RxdrugMapper.class 656B
Boolean_tiaoxingma.class 655B
Boolean_tiaoxingma.class 655B
RxpersonMapper.class 636B
RxpersonMapper.class 636B
ManagerMapper.class 578B
ManagerMapper.class 578B
Gonghuoshang.class 553B
Gonghuoshang.class 553B
GonghuoshangMapper.class 509B
GonghuoshangMapper.class 509B
bootstrap.css 143KB
bootstrap.css 143KB
bootstrap.min.css 118KB
bootstrap.min.css 118KB
bootstrap-theme.css 26KB
bootstrap-theme.css 26KB
bootstrap-theme.min.css 23KB
bootstrap-theme.min.css 23KB
bootstrap-datetimepicker.min.css 11KB
bootstrap-datetimepicker.min.css 11KB
main.css 67B
main.css 67B
index_css.css 51B
index_css.css 51B
glyphicons-halflings-regular.eot 20KB
glyphicons-halflings-regular.eot 20KB
.gitignore 182B
drug.iml 5KB
aspectjweaver-1.8.9.jar 1.78MB
mybatis-3.4.6.jar 1.55MB
jackson-databind-2.9.10.5.jar 1.29MB
spring-context-4.3.9.RELEASE.jar 1.09MB
共 360 条
- 1
- 2
- 3
- 4
资源评论
荒野大飞
- 粉丝: 1w+
- 资源: 2700
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 砂滤系统sw17全套设计资料100%好用.zip
- (176822044)PXIE协议规范,硬件开发PXIE,CPCI
- 手机平板真空贴合机.STEP全套设计资料100%好用.zip
- (176818244)基于SpringBoot+MyBatis的个人博客系统.zip
- C# opc ua客户端实例源码,带ef6+sqlite 代码有完整的注解,及包括所有的链接库和程序结构思维图 纯学习资料
- 食品垂直升降机IGS全套设计资料100%好用.zip
- 手动压榨橙汁机sw2020可编辑全套设计资料100%好用.zip
- (176818222)基于springboot + mybatis 的个人博客系统.zip
- (173588238)基于Spring Boot垂钓服务系统的设计与实现(源码+数据库)071739
- 三菱FX3U与4台台达Ms300变频器通讯程序 通讯说明:用三菱FX3U的PLC实现与4台台达ms300变频器modbus通讯 器件:三菱FX3U PLC,三菱FX3U 485BD通讯板,台达Ms30
- 四缸发动机sw17可编辑全套设计资料100%好用.zip
- 花瓣网图片大搜罗:Python爬虫实战手册
- 书籍用工业真空吸尘器step全套设计资料100%好用.zip
- 西门子S7-200模拟器bet2.5e版本支持PPI通讯modbus通讯,没有PLC也可以测试程序,支持mobus RTU,支持主站和从站通讯,支持PPI通讯,支持用户程序导入,无使用时间限制,无网络
- 碎草机sw17可编辑全套设计资料100%好用.zip
- 塔式起重机sw13可编辑全套设计资料100%好用.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功