boxtemlateone.cpp 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. #include "boxtemlateone.h"
  2. #include "pqQtlib/log/pqlog.h"
  3. BoxTemlateOne::BoxTemlateOne()
  4. {
  5. }
  6. QImage BoxTemlateOne::doPrinter(QSharedPointer<BoxInfo> box)
  7. {
  8. //TODO: 小宋,迁移打印 箱单的逻辑
  9. // TODO: 测试打印出来的单子
  10. // if(datalist.isEmpty()){
  11. // return;
  12. // }
  13. // QLogInfo(log) << "prnter " << bar<< " " << info->caseNumber();
  14. QSharedPointer<PackInfo> pinfo = box->parentPack();
  15. if(pinfo.isNull()) return QImage();
  16. QSize size(MAXWIDTH*5,MAXHEIGHT*5);
  17. QImage image(size,QImage::Format_ARGB32);
  18. image.fill(qRgba(255, 255, 255, 255));
  19. QPainter painter(&image);
  20. painter.drawRect(5*5,5*5,90*5,15*5);
  21. painter.drawRect(5*5,20*5,90*5,35*5);
  22. painter.drawLine(20*5,20*5,20*5,55*5);
  23. painter.drawLine(50*5,20*5,50*5,55*5);
  24. painter.drawLine(66*5,20*5,66*5,55*5);
  25. painter.drawLine(5*5,27*5,95*5,27*5);
  26. painter.drawLine(5*5,34*5,95*5,34*5);
  27. painter.drawLine(5*5,41*5,95*5,41*5);
  28. painter.drawLine(5*5,48*5,95*5,48*5);
  29. painter.drawRect(5*5,55*5,90*5,15*5);
  30. painter.drawRect(5*5,70*5,90*5,7*5);
  31. QRect target(0*5, 57*5, 100*5, 65*5);
  32. // QRect source(-10*5, 0, 65*5, 40*5);
  33. QString bar = box->caseNumber();
  34. code.draw(painter,target,bar);
  35. // painter.drawImage(target,barCode.draw(barCode.CodeBinary(bar),bar),source);
  36. painter.setRenderHint(QPainter::Antialiasing,true);
  37. painter.setRenderHint(QPainter::TextAntialiasing,true);
  38. painter.setRenderHint(QPainter::HighQualityAntialiasing,true);
  39. QFont font;
  40. font.setFamily("宋体");
  41. font.setPixelSize(40);
  42. font.setWeight(QFont::ExtraLight);
  43. painter.setFont(font);
  44. painter.drawText(6*5,15*5,box->parentPack()->customer);
  45. // qDebug()<< "公司名称:" <<box->parentPack()->customer;
  46. font.setPixelSize(20);
  47. font.setBold(true);
  48. painter.setFont(font);
  49. painter.drawText(8*5,25*5,QStringLiteral("品名"));
  50. painter.drawText(53*5,25*5,QStringLiteral("毛重"));
  51. painter.drawText(8*5,32*5,QStringLiteral("批号"));
  52. painter.drawText(53*5,32*5,QStringLiteral("净重"));
  53. painter.drawText(8*5,39*5,QStringLiteral("规格"));
  54. painter.drawText(53*5,39*5,QStringLiteral("筒数"));
  55. painter.drawText(8*5,46*5,QStringLiteral("等级"));
  56. painter.drawText(53*5,46*5,QStringLiteral("捻向"));
  57. painter.drawText(8*5,53*5,QStringLiteral("箱号"));
  58. painter.drawText(50*5,53*5,QStringLiteral("纸管颜色"));
  59. painter.drawText(21*5,25*5,pinfo->info()->product_type_code);
  60. painter.drawText(21*5,32*5,pinfo->info()->batch_no);
  61. painter.drawText(21*5,39*5,pinfo->info()->specs);
  62. painter.drawText(67*5,25*5,QString("%1 kg").arg(getDecimalbit( box->gross_weight / 1000.00)));//datalist.at(0));
  63. painter.drawText(67*5,32*5,QString("%1 kg").arg(getDecimalbit(box->net_weight / 1000.00)));//datalist.at(1));
  64. painter.drawText(67*5,39*5,QString::number(box->tube_number));//datalist.at(2));
  65. painter.drawText(21*5,46*5,box->Level);//datalist.at(3));
  66. painter.drawText(67*5,46*5,box->twist_type);//datalist.at(4));
  67. painter.drawText(67*5,53*5,box->bucket_color);//datalist.at(6));
  68. font.setPixelSize(17);
  69. painter.setFont(font);
  70. painter.drawText(21*5,53*5,box->caseNumber());//datalist.at(5));
  71. painter.drawText(4*5,75*5," 电话:"+ box->parentPack()->telephone);
  72. // print(image);
  73. QString path = PQ::PQLogManger::this_()->getSaveFilePath();
  74. // if(save)
  75. image.save(path+"/xiangdan/code"+bar+".bmp");
  76. return image;
  77. // return img;
  78. }
  79. QSize BoxTemlateOne::printSize()
  80. {
  81. return QSize(100,80);
  82. }
  83. PackTemlateOne::PackTemlateOne()
  84. {}
  85. QImage PackTemlateOne::doPrinter(QSharedPointer<PackInfo> pack)
  86. {
  87. //TODO: 小宋,迁移打印 码单的逻辑
  88. QSize size(MAXWIDTH*5,MAXHEIGHT*5);
  89. QImage image(size,QImage::Format_ARGB32);
  90. image.fill(qRgba(255, 255, 255, 255));
  91. QPainter painter(&image);
  92. painter.drawRect(4*5,4*5,92*5,68*5);
  93. // painter.drawLine(50*5,0,50*5,80*5);
  94. // painter.drawLine(4*5,16*5,96*5,16*5);
  95. // painter.drawLine(4*5,22*5,96*5,22*5);
  96. // painter.drawLine(4*5,28*5,96*5,28*5);
  97. // painter.drawLine(4*5,34*5,96*5,34*5);
  98. // painter.drawLine(4*5,40*5,96*5,40*5);
  99. // painter.drawLine(4*5,46*5,96*5,46*5);
  100. // painter.drawLine(4*5,52*5,96*5,52*5);
  101. // painter.drawLine(4*5,58*5,96*5,58*5);
  102. // painter.drawLine(4*5,65*5,96*5,65*5);
  103. QFont font;
  104. font.setFamily("宋体");
  105. font.setPixelSize(30);
  106. font.setWeight(QFont::ExtraLight);
  107. painter.setFont(font);
  108. painter.drawText(38*5,10*5,QStringLiteral("入 库 单"));
  109. font.setPixelSize(20);
  110. painter.setFont(font);
  111. painter.drawText(8*5,15*5,QStringLiteral("规格:"));
  112. painter.drawText(59*5,15*5,QStringLiteral("类型:"));
  113. painter.drawText(8*5,21*5,QStringLiteral("批号:"));
  114. painter.drawText(59*5,21*5,QStringLiteral("等级:"));
  115. font.setPixelSize(15);
  116. painter.setFont(font);
  117. painter.drawText(8*5,64*5,QStringLiteral("总数"));
  118. painter.drawText(38*5,64*5,QStringLiteral("总重量"));
  119. painter.drawText(68*5,64*5,QStringLiteral("总筒数"));
  120. // QFont font;
  121. font.setPixelSize(15);
  122. painter.setFont(font);
  123. int boxSize = pack->boxes().size();
  124. for(int i = 0; i < boxSize; ++i){
  125. int line = i / 5;
  126. int cloun = i % 5;
  127. painter.drawText((9 + line * 19)*5,(27 + cloun * 6)*5,QString("%1.").arg(i + 1));
  128. }
  129. QRect target(0*5, 67*5, 100*5, 75*5);
  130. QString bar = pack->codeSingle();
  131. code.draw(painter,target,bar);
  132. font.setPixelSize(20);
  133. font.setFamily("黑体");
  134. painter.setFont(font);
  135. painter.drawText(19*5,15*5,pack->info()->specs);//QStringLiteral("规格"));
  136. painter.drawText(70*5,15*5,pack->info()->category);//QStringLiteral("类型"));
  137. painter.drawText(19*5,21*5,pack->info()->batch_no);//QStringLiteral("批号"));
  138. painter.drawText(70*5,21*5,pack->level);//info.at(0));
  139. for(int i = 0; i < boxSize; ++i)
  140. {
  141. QString code = getDecimalbit(pack->boxes().at(i)->net_weight / 1000);
  142. int line = i / 5;
  143. int cloun = i % 5;
  144. painter.drawText((13 + line * 19)*5,(27.5 + cloun * 6 )*5 ,code);
  145. }
  146. painter.drawText(15*5,64*5,QString::number(pack->boxes().size()));
  147. painter.drawText(48*5,64*5,QString("%1 kg").arg(getDecimalbit(pack->net_weight() / 1000.00)));
  148. painter.drawText(78*5,64*5,QString::number(pack->tube_number()));
  149. QString path = PQ::PQLogManger::this_()->getSaveFilePath();
  150. // print(image);
  151. image.save(path+"/rukudan/code"+bar+".bmp");
  152. return image;
  153. }
  154. QSize PackTemlateOne::printSize()
  155. {
  156. return QSize(100,80);
  157. }