boxtemlateone.cpp 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579
  1. #include "boxtemlateone.h"
  2. #include "pqQtlib/log/pqlog.h"
  3. BoxTemlateOne::BoxTemlateOne()
  4. {
  5. }
  6. //默认箱单
  7. QImage BoxTemlateOne::doPrinter(QSharedPointer<BoxInfo> box)
  8. {
  9. QSharedPointer<PackInfo> pinfo = box->parentPack();
  10. if(pinfo.isNull()) return QImage();
  11. QSize size(MAXWIDTH*5,MAXHEIGHT*5);
  12. QImage image(size,QImage::Format_ARGB32);
  13. image.fill(qRgba(255, 255, 255, 255));
  14. QPainter painter(&image);
  15. painter.drawRect(5*5,5*5,90*5,15*5);
  16. painter.drawRect(5*5,20*5,90*5,35*5);
  17. painter.drawLine(20*5,20*5,20*5,55*5);
  18. painter.drawLine(50*5,20*5,50*5,55*5);
  19. painter.drawLine(66*5,20*5,66*5,55*5);
  20. painter.drawLine(5*5,27*5,95*5,27*5);
  21. painter.drawLine(5*5,34*5,95*5,34*5);
  22. painter.drawLine(5*5,41*5,95*5,41*5);
  23. painter.drawLine(5*5,48*5,95*5,48*5);
  24. painter.drawRect(5*5,55*5,90*5,15*5);
  25. painter.drawRect(5*5,70*5,90*5,7*5);
  26. QRect target(0*5, 57*5, 100*5, 65*5);
  27. // QRect source(-10*5, 0, 65*5, 40*5);
  28. QString bar = box->caseNumber();
  29. code.draw(painter,target,bar);
  30. // painter.drawImage(target,barCode.draw(barCode.CodeBinary(bar),bar),source);
  31. painter.setRenderHint(QPainter::Antialiasing,true);
  32. painter.setRenderHint(QPainter::TextAntialiasing,true);
  33. painter.setRenderHint(QPainter::HighQualityAntialiasing,true);
  34. QFont font;
  35. font.setFamily("宋体");
  36. font.setPixelSize(40);
  37. font.setWeight(QFont::ExtraLight);
  38. painter.setFont(font);
  39. painter.drawText(6*5,15*5,box->parentPack()->customer);
  40. font.setPixelSize(20);
  41. font.setBold(true);
  42. painter.setFont(font);
  43. painter.drawText(8*5,25*5,QStringLiteral("品名"));
  44. painter.drawText(53*5,25*5,QStringLiteral("毛重"));
  45. painter.drawText(8*5,32*5,QStringLiteral("批号"));
  46. painter.drawText(53*5,32*5,QStringLiteral("净重"));
  47. painter.drawText(8*5,39*5,QStringLiteral("规格"));
  48. painter.drawText(53*5,39*5,QStringLiteral("筒数"));
  49. painter.drawText(8*5,46*5,QStringLiteral("等级"));
  50. painter.drawText(53*5,46*5,QStringLiteral("捻向"));
  51. painter.drawText(8*5,53*5,QStringLiteral("箱号"));
  52. painter.drawText(50*5,53*5,QStringLiteral("纸管颜色"));
  53. painter.drawText(21*5,25*5,pinfo->info()->product_type_code);
  54. painter.drawText(21*5,32*5,pinfo->info()->batch_no);
  55. painter.drawText(21*5,39*5,pinfo->info()->specs);
  56. painter.drawText(67*5,25*5,QString("%1 kg").arg(getDecimalbit(box->gross_weight / 1000.00)));//datalist.at(0));
  57. painter.drawText(67*5,32*5,QString("%1 kg").arg(getDecimalbit(box->net_weight / 1000.00)));//datalist.at(1));
  58. painter.drawText(67*5,39*5,QString::number(box->tube_number));//datalist.at(2));
  59. painter.drawText(21*5,46*5,box->Level);//datalist.at(3));
  60. painter.drawText(67*5,46*5,box->twist_type);//datalist.at(4));
  61. painter.drawText(67*5,53*5,box->bucket_color);//datalist.at(6));
  62. font.setPixelSize(17);
  63. painter.setFont(font);
  64. painter.drawText(21*5,53*5,box->caseNumber());//datalist.at(5));
  65. painter.drawText(4*5,75*5," 电话:"+ box->parentPack()->telephone);
  66. // print(image);
  67. QString path = PQ::PQLogManger::this_()->getSaveFilePath();
  68. image.save(path+"/xiangdan/code"+bar+".bmp");
  69. return image;
  70. // return img;
  71. }
  72. //默认箱单2
  73. QImage BoxTemlateOne::doPrinter1(QSharedPointer<BoxInfo> box)
  74. {
  75. QSharedPointer<PackInfo> pinfo = box->parentPack();
  76. if(pinfo.isNull()) return QImage();
  77. QSize size(MAXWIDTH*5,MAXHEIGHT*5);
  78. QImage image(size,QImage::Format_ARGB32);
  79. image.fill(qRgba(255, 255, 255, 255));
  80. QPainter painter(&image);
  81. painter.drawRect(5*5,5*5,90*5,60*5);
  82. painter.drawLine(5*5,14*5,95*5,14*5);
  83. painter.drawLine(5*5,23*5,95*5,23*5);
  84. painter.drawLine(5*5,32*5,95*5,32*5);
  85. painter.drawLine(5*5,41*5,95*5,41*5);
  86. painter.drawLine(5*5,50*5,95*5,50*5);
  87. painter.drawLine(50*5,32*5,50*5,60*5);
  88. painter.drawLine(20*5,5*5,20*5,60*5);
  89. painter.drawLine(65*5,32*5,65*5,60*5);
  90. painter.drawRect(5*5,60*5,90*5,15*5);
  91. // painter.drawRect(5*5,70*5,90*5,7*5);
  92. QRect target(0*5, 62*5, 100*5, 70*5);
  93. // QRect source(-10*5, 0, 65*5, 40*5);
  94. QString bar = box->caseNumber();
  95. code.draw(painter,target,bar);
  96. // painter.drawImage(target,barCode.draw(barCode.CodeBinary(bar),bar),source);
  97. // painter.setRenderHint(QPainter::Antialiasing,true);
  98. // painter.setRenderHint(QPainter::TextAntialiasing,true);
  99. // painter.setRenderHint(QPainter::HighQualityAntialiasing,true);
  100. QFont font;
  101. font.setFamily("宋体");
  102. font.setPixelSize(18);
  103. font.setBold(true);
  104. painter.setFont(font);
  105. painter.drawText(6*5,11*5,QStringLiteral("品 种"));
  106. painter.drawText(6*5,20*5,QStringLiteral("规 格"));
  107. painter.drawText(6*5,29*5,QStringLiteral("批 号"));
  108. painter.drawText(6*5,38*5,QStringLiteral("等 级"));
  109. painter.drawText(6*5,47*5,QStringLiteral("净 重"));
  110. painter.drawText(6*5,56*5,QStringLiteral("筒 数"));
  111. painter.drawText(50*5,38*5,QStringLiteral("纸管颜色"));
  112. painter.drawText(51*5,47*5,QStringLiteral("毛 重"));
  113. painter.drawText(51*5,56*5,QStringLiteral("箱 号"));
  114. // painter.drawRect(text1);
  115. font.setPixelSize(20);
  116. painter.setFont(font);
  117. painter.drawText(QRect(20*5,5*5,75*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,pinfo->info()->product_type_code);
  118. painter.drawText(QRect(20*5,14*5,75*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,pinfo->info()->specs);
  119. painter.drawText(QRect(20*5,23*5,75*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,pinfo->info()->batch_no);
  120. painter.drawText(QRect(20*5,32*5,30*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,box->Level);
  121. painter.drawText(QRect(20*5,41*5,30*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,QString("%1 kg").arg(getDecimalbit(box->net_weight / 1000.00)));
  122. painter.drawText(QRect(20*5,50*5,30*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,QString::number(box->tube_number));
  123. painter.drawText(QRect(65*5,32*5,30*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,pinfo->info()->bucket_color);
  124. painter.drawText(QRect(65*5,41*5,30*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,QString("%1 kg").arg(getDecimalbit(box->gross_weight / 1000.00)));
  125. font.setPixelSize(18);
  126. painter.setFont(font);
  127. painter.drawText(QRect(65*5,50*5,30*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,box->caseNumber());
  128. // print(image);
  129. QString path = PQ::PQLogManger::this_()->getSaveFilePath();
  130. image.save(path+"/xiangdan/code"+bar+".bmp");
  131. return image;
  132. // return img;
  133. }
  134. QImage BoxTemlateOne::doPrinter(QSharedPointer<BoxInfo> box,int ModelIndex)
  135. {
  136. boxM = GlobalInfo::this_()->BoxModelList().at(ModelIndex);
  137. QSharedPointer<PackInfo> pinfo = box->parentPack();
  138. QJsonObject info = pinfo->info()->toObject();
  139. QJsonObject obj = box->toObject();
  140. if(pinfo.isNull()) return QImage();
  141. QSize size(MAXWIDTH*5,MAXHEIGHT*5);
  142. QImage image(size,QImage::Format_ARGB32);
  143. image.fill(qRgba(255, 255, 255, 255));
  144. QPainter painter(&image);
  145. painter.drawRect(5*5,5*5,90*5,15*5);
  146. painter.drawRect(5*5,20*5,90*5,35*5);
  147. painter.drawLine(20*5,20*5,20*5,55*5);
  148. painter.drawLine(50*5,20*5,50*5,55*5);
  149. painter.drawLine(66*5,20*5,66*5,55*5);
  150. painter.drawLine(5*5,27*5,95*5,27*5);
  151. painter.drawLine(5*5,34*5,95*5,34*5);
  152. painter.drawLine(5*5,41*5,95*5,41*5);
  153. painter.drawLine(5*5,48*5,95*5,48*5);
  154. painter.drawRect(5*5,55*5,90*5,15*5);
  155. painter.drawRect(5*5,70*5,90*5,7*5);
  156. QRect target(0*5, 57*5, 100*5, 65*5);
  157. // QRect source(-10*5, 0, 65*5, 40*5);
  158. QString bar = box->caseNumber();
  159. code.draw(painter,target,bar);
  160. // painter.drawImage(target,barCode.draw(barCode.CodeBinary(bar),bar),source);
  161. painter.setRenderHint(QPainter::Antialiasing,true);
  162. painter.setRenderHint(QPainter::TextAntialiasing,true);
  163. painter.setRenderHint(QPainter::HighQualityAntialiasing,true);
  164. QFont font;
  165. font.setFamily("宋体");
  166. font.setPixelSize(40);
  167. font.setWeight(QFont::ExtraLight);
  168. painter.setFont(font);
  169. painter.drawText(6*5,15*5,box->parentPack()->customer);
  170. font.setPixelSize(20);
  171. font.setBold(true);
  172. painter.setFont(font);
  173. // painter.drawText(8*5,25*5,boxM->text1_1);
  174. // painter.drawText(53*5,25*5,boxM->text1_2);
  175. // painter.drawText(8*5,32*5,boxM->text2_1);
  176. // painter.drawText(53*5,32*5,boxM->text2_2);
  177. // painter.drawText(8*5,39*5,boxM->text3_1);
  178. // painter.drawText(53*5,39*5,boxM->text3_2);
  179. // painter.drawText(8*5,46*5,boxM->text4_1);
  180. // painter.drawText(53*5,46*5,boxM->text4_2);
  181. // painter.drawText(8*5,53*5,boxM->text5_1);
  182. // painter.drawText(50*5,53*5,boxM->text5_2);
  183. painter.drawText(8*5,25*5,boxM->Type_Name.at(0).toString());
  184. painter.drawText(53*5,25*5,boxM->Type_Name.at(5).toString());
  185. painter.drawText(8*5,32*5,boxM->Type_Name.at(1).toString());
  186. painter.drawText(53*5,32*5,boxM->Type_Name.at(6).toString());
  187. painter.drawText(8*5,39*5,boxM->Type_Name.at(2).toString());
  188. painter.drawText(53*5,39*5,boxM->Type_Name.at(7).toString());
  189. painter.drawText(8*5,46*5,boxM->Type_Name.at(3).toString());
  190. painter.drawText(53*5,46*5,boxM->Type_Name.at(8).toString());
  191. painter.drawText(8*5,53*5,boxM->Type_Name.at(4).toString());
  192. painter.drawText(53*5,53*5,boxM->Type_Name.at(9).toString());
  193. // painter.drawText(50*5,53*5,boxM->Type_Name.at(9).toString());
  194. painter.drawText(21*5,25*5,FindData(box,boxM->Type_Data.at(0).toString()));
  195. painter.drawText(21*5,32*5,FindData(box,boxM->Type_Data.at(1).toString()));
  196. painter.drawText(21*5,39*5,FindData(box,boxM->Type_Data.at(2).toString()));
  197. painter.drawText(21*5,46*5,FindData(box,boxM->Type_Data.at(3).toString()));
  198. painter.drawText(21*5,53*5,FindData(box,boxM->Type_Data.at(4).toString()));
  199. painter.drawText(67*5,25*5,FindData(box,boxM->Type_Data.at(5).toString()));//datalist.at(0));
  200. painter.drawText(67*5,32*5,FindData(box,boxM->Type_Data.at(6).toString()));
  201. painter.drawText(67*5,39*5,FindData(box,boxM->Type_Data.at(7).toString()));//datalist.at(2));
  202. painter.drawText(67*5,46*5,FindData(box,boxM->Type_Data.at(8).toString()));//datalist.at(4));
  203. painter.drawText(67*5,53*5,FindData(box,boxM->Type_Data.at(9).toString()));//datalist.at(6));
  204. font.setPixelSize(17);
  205. painter.setFont(font);
  206. painter.drawText(4*5,75*5," 电话:"+ box->parentPack()->telephone);
  207. // QString path = PQ::PQLogManger::this_()->getSaveFilePath();
  208. // image.save(path+"/xiangdan/code"+bar+".bmp");
  209. return image;
  210. }
  211. QString BoxTemlateOne::FindData(QSharedPointer<BoxInfo> box,QString data){
  212. QSharedPointer<PackInfo> pinfo = box->parentPack();
  213. // QJsonObject info = pinfo->info()->toObject();
  214. // QJsonObject obj = box->toObject();
  215. if(data=="品名"){
  216. return pinfo->info()->product_type_code;
  217. }else if(data=="批号"){
  218. return pinfo->info()->batch_no;
  219. }else if(data=="规格"){
  220. return pinfo->info()->specs;
  221. }else if(data=="毛重"){
  222. return QString("%1 kg").arg(getDecimalbit( box->gross_weight / 1000.00));
  223. }else if(data=="净重"){
  224. return QString("%1 kg").arg(getDecimalbit(box->net_weight / 1000.00));
  225. }else if(data=="筒数"){
  226. return QString::number(box->tube_number);
  227. }else if(data=="等级"){
  228. return box->Level;
  229. }else if(data=="捻向"){
  230. return box->twist_type;
  231. }else if(data=="管色"){
  232. return box->bucket_color;
  233. }else if(data=="箱号"){
  234. return box->caseNumber();
  235. }else if(data=="类型"){
  236. return pinfo->info()->category;
  237. }else if(data=="旦数"){
  238. return pinfo->info()->denier;
  239. }else if(data=="分特"){
  240. return pinfo->info()->dtex;
  241. }else if(data=="孔数"){
  242. return pinfo->info()->fiber;
  243. }else if(data=="颜色"){
  244. return pinfo->info()->color;
  245. }else if(data=="皮重"){
  246. return pinfo->info()->box_weight;
  247. }else if(data=="筒重"){
  248. return pinfo->info()->bucket_weight;
  249. }else if(data!="空"){
  250. return data;
  251. }
  252. return "";
  253. }
  254. QSize BoxTemlateOne::printSize()
  255. {
  256. return QSize(100,80);
  257. }
  258. QImage BoxTemlateOne::Boxmodel()
  259. {
  260. QSize size(MAXWIDTH*5,MAXHEIGHT*5);
  261. QImage image(size,QImage::Format_ARGB32);
  262. image.fill(qRgba(255, 255, 255, 255));
  263. QPainter painter(&image);
  264. painter.drawRect(5*5,5*5,90*5,15*5);
  265. painter.drawRect(5*5,20*5,90*5,35*5);
  266. painter.drawLine(20*5,20*5,20*5,55*5);
  267. painter.drawLine(50*5,20*5,50*5,55*5);
  268. painter.drawLine(66*5,20*5,66*5,55*5);
  269. painter.drawLine(5*5,27*5,95*5,27*5);
  270. painter.drawLine(5*5,34*5,95*5,34*5);
  271. painter.drawLine(5*5,41*5,95*5,41*5);
  272. painter.drawLine(5*5,48*5,95*5,48*5);
  273. painter.drawRect(5*5,55*5,90*5,15*5);
  274. painter.drawRect(5*5,70*5,90*5,7*5);
  275. QRect target(0*5, 57*5, 100*5, 65*5);
  276. QString bar = "200324155812001";
  277. code.draw(painter,target,bar);
  278. QFont font;
  279. font.setPixelSize(40);
  280. painter.setFont(font);
  281. painter.drawText(5*5,15*5,"公司名称");
  282. font.setPixelSize(17);
  283. painter.setFont(font);
  284. painter.drawText(4*5,75*5," 电话:11111111111");
  285. // QString path = PQ::PQLogManger::this_()->getSaveFilePath();
  286. // if(save)
  287. // image.save(path+"/xiangdan/code"+"11111"+".bmp");
  288. return image;
  289. }
  290. PackTemlateOne::PackTemlateOne()
  291. {}
  292. //默认码单
  293. QImage PackTemlateOne::doPrinter(QSharedPointer<PackInfo> pack)
  294. {
  295. //TODO: 小宋,迁移打印 码单的逻辑
  296. QSize size(MAXWIDTH*5,MAXHEIGHT*5);
  297. QImage image(size,QImage::Format_ARGB32);
  298. image.fill(qRgba(255, 255, 255, 255));
  299. QPainter painter(&image);
  300. painter.drawRect(4*5,4*5,92*5,68*5);
  301. QFont font;
  302. font.setFamily("宋体");
  303. font.setPixelSize(30);
  304. font.setWeight(QFont::ExtraLight);
  305. painter.setFont(font);
  306. painter.drawText(38*5,10*5,QStringLiteral("入 库 单"));
  307. font.setPixelSize(20);
  308. painter.setFont(font);
  309. painter.drawText(8*5,15*5,QStringLiteral("规格:"));
  310. painter.drawText(59*5,15*5,QStringLiteral("类型:"));
  311. painter.drawText(8*5,21*5,QStringLiteral("批号:"));
  312. painter.drawText(59*5,21*5,QStringLiteral("等级:"));
  313. font.setPixelSize(15);
  314. painter.setFont(font);
  315. painter.drawText(8*5,64*5,QStringLiteral("总数"));
  316. painter.drawText(38*5,64*5,QStringLiteral("总重量"));
  317. painter.drawText(68*5,64*5,QStringLiteral("总筒数"));
  318. // QFont font;
  319. font.setPixelSize(15);
  320. painter.setFont(font);
  321. int boxSize = pack->boxes().size();
  322. for(int i = 0; i < boxSize; ++i){
  323. int line = i / 5;
  324. int cloun = i % 5;
  325. painter.drawText((9 + line * 19)*5,(27 + cloun * 6)*5,QString("%1.").arg(i + 1));
  326. }
  327. QRect target(0*5, 67*5, 100*5, 75*5);
  328. QString bar = pack->codeSingle();
  329. code.draw(painter,target,bar);
  330. font.setPixelSize(20);
  331. font.setFamily("黑体");
  332. painter.setFont(font);
  333. painter.drawText(19*5,15*5,pack->info()->specs);//QStringLiteral("规格"));
  334. painter.drawText(70*5,15*5,pack->info()->category);//QStringLiteral("类型"));
  335. painter.drawText(19*5,21*5,pack->info()->batch_no);//QStringLiteral("批号"));
  336. painter.drawText(70*5,21*5,pack->level);//info.at(0));
  337. for(int i = 0; i < boxSize; ++i)
  338. {
  339. QString code = getDecimalbit(pack->boxes().at(i)->net_weight / 1000.00);
  340. int line = i / 5;
  341. int cloun = i % 5;
  342. painter.drawText((13 + line * 19)*5,(27.5 + cloun * 6 )*5 ,code);
  343. }
  344. painter.drawText(15*5,64*5,QString::number(pack->boxes().size()));
  345. painter.drawText(48*5,64*5,QString("%1 kg").arg(getDecimalbit(pack->net_weight() / 1000.00)));
  346. painter.drawText(78*5,64*5,QString::number(pack->tube_number()));
  347. // QString path = PQ::PQLogManger::this_()->getSaveFilePath();
  348. // image.save(path+"/rukudan/code"+bar+".bmp");
  349. return image;
  350. }
  351. QImage PackTemlateOne::doPrinter(QSharedPointer<PackInfo> pack, int ModelIndex)
  352. {
  353. //TODO: 小宋,迁移打印 码单的逻辑
  354. packM = GlobalInfo::this_()->PackModelList().at(ModelIndex);
  355. QSize size(MAXWIDTH*5,MAXHEIGHT*5);
  356. QImage image(size,QImage::Format_ARGB32);
  357. image.fill(qRgba(255, 255, 255, 255));
  358. QPainter painter(&image);
  359. painter.drawRect(4*5,4*5,92*5,68*5);
  360. QFont font;
  361. font.setFamily("宋体");
  362. font.setPixelSize(30);
  363. font.setWeight(QFont::ExtraLight);
  364. painter.setFont(font);
  365. painter.drawText(38*5,10*5,QStringLiteral("入 库 单"));
  366. font.setPixelSize(20);
  367. painter.setFont(font);
  368. painter.drawText(8*5,15*5,packM->Type_Name.at(0).toString());
  369. painter.drawText(59*5,15*5,packM->Type_Name.at(1).toString());
  370. painter.drawText(8*5,21*5,packM->Type_Name.at(2).toString());
  371. painter.drawText(59*5,21*5,packM->Type_Name.at(3).toString());
  372. font.setPixelSize(15);
  373. painter.setFont(font);
  374. painter.drawText(8*5,64*5,packM->Type_Name.at(4).toString());
  375. painter.drawText(38*5,64*5,packM->Type_Name.at(5).toString());
  376. painter.drawText(68*5,64*5,packM->Type_Name.at(6).toString());
  377. // QFont font;
  378. font.setPixelSize(15);
  379. painter.setFont(font);
  380. int boxSize = pack->boxes().size();
  381. for(int i = 0; i < boxSize; ++i){
  382. int line = i / 5;
  383. int cloun = i % 5;
  384. painter.drawText((9 + line * 19)*5,(27 + cloun * 6)*5,QString("%1.").arg(i + 1));
  385. }
  386. QRect target(0*5, 67*5, 100*5, 75*5);
  387. QString bar = pack->codeSingle();
  388. code.draw(painter,target,bar);
  389. font.setPixelSize(20);
  390. font.setFamily("黑体");
  391. painter.setFont(font);
  392. painter.drawText(19*5,15*5,FindData(pack,packM->Type_Data.at(0).toString()));//QStringLiteral("规格"));
  393. painter.drawText(70*5,15*5,FindData(pack,packM->Type_Data.at(1).toString()));//QStringLiteral("类型"));
  394. painter.drawText(19*5,21*5,FindData(pack,packM->Type_Data.at(2).toString()));//QStringLiteral("批号"));
  395. painter.drawText(70*5,21*5,FindData(pack,packM->Type_Data.at(3).toString()));//info.at(0));
  396. for(int i = 0; i < boxSize; ++i)
  397. {
  398. QString code = Find20Data(pack,packM->Type_Data.at(4).toString(),i);
  399. int line = i / 5;
  400. int cloun = i % 5;
  401. painter.drawText((13 + line * 19)*5,(27.5 + cloun * 6 )*5 ,code);
  402. }
  403. painter.drawText(15*5,64*5,FindData(pack,packM->Type_Data.at(5).toString()));
  404. painter.drawText(48*5,64*5,FindData(pack,packM->Type_Data.at(6).toString()));
  405. painter.drawText(78*5,64*5,FindData(pack,packM->Type_Data.at(7).toString()));
  406. // QString path = PQ::PQLogManger::this_()->getSaveFilePath();
  407. // image.save(path+"/rukudan/code"+bar+".bmp");
  408. return image;
  409. }
  410. QImage PackTemlateOne::Packmodel()
  411. {
  412. QSize size(MAXWIDTH*5,MAXHEIGHT*5);
  413. QImage image(size,QImage::Format_ARGB32);
  414. image.fill(qRgba(255, 255, 255, 255));
  415. QPainter painter(&image);
  416. painter.drawRect(4*5,4*5,92*5,68*5);
  417. QFont font;
  418. font.setFamily("宋体");
  419. font.setPixelSize(30);
  420. font.setWeight(QFont::ExtraLight);
  421. painter.setFont(font);
  422. painter.drawText(38*5,10*5,QStringLiteral("入 库 单"));
  423. QRect target(0*5, 67*5, 100*5, 75*5);
  424. QString bar = "0000200313170054032";
  425. code.draw(painter,target,bar);
  426. font.setPixelSize(20);
  427. font.setFamily("黑体");
  428. return image;
  429. }
  430. QString PackTemlateOne::FindData(QSharedPointer<PackInfo> pack, QString data)
  431. {
  432. if(data=="批号"){
  433. return pack->info()->batch_no;
  434. }else if(data=="类型"){
  435. return pack->info()->category;
  436. }else if(data=="品种"){
  437. return pack->info()->product_type_code;
  438. }else if(data=="旦数"){
  439. return pack->info()->denier;
  440. }else if(data=="分特"){
  441. return pack->info()->dtex;
  442. }else if(data=="等级"){
  443. return pack->level;
  444. }else if(data=="孔数"){
  445. return pack->info()->fiber;
  446. }else if(data=="规格"){
  447. return pack->info()->specs;
  448. }else if(data=="颜色"){
  449. return pack->info()->color;
  450. }else if(data=="捻向"){
  451. return pack->info()->twist_type;
  452. }else if(data=="管色"){
  453. return pack->info()->bucket_color;
  454. }else if(data=="皮重"){
  455. return pack->info()->box_weight;
  456. }else if(data=="机台"){
  457. return pack->info()->machine_no;
  458. }else if(data=="纸箱"){
  459. return pack->info()->carton_type;
  460. }else if(data=="总筒数"){
  461. return QString::number(pack->tube_number());
  462. }else if(data=="总毛重"){
  463. return QString("%1 kg").arg(getDecimalbit(pack->gross_weight() / 1000.00));
  464. }else if(data=="总净重"){
  465. return QString("%1 kg").arg(getDecimalbit(pack->net_weight() / 1000.00));
  466. }else if(data!="空"){
  467. return data;
  468. }
  469. return "";
  470. }
  471. QString PackTemlateOne::Find20Data(QSharedPointer<PackInfo> pack, QString data, int index)
  472. {
  473. if(data=="毛重"){
  474. return QString("%1 kg").arg(getDecimalbit(pack->boxInfoAt(index)->gross_weight / 1000.00));
  475. }else if(data=="净重"){
  476. return QString("%1 kg").arg(getDecimalbit(pack->boxInfoAt(index)->net_weight / 1000.00));
  477. }else if(data=="筒重"){
  478. return QString::number(pack->boxInfoAt(index)->tube_number);
  479. }else if(data=="捻向"){
  480. return pack->boxInfoAt(index)->twist_type;
  481. }else if(data=="管色"){
  482. return pack->boxInfoAt(index)->bucket_color;
  483. }else if(data=="总筒重"){
  484. return QString("%1 kg").arg(getDecimalbit(pack->boxInfoAt(index)->bucket_weight / 1000.00));
  485. }else if(data=="筒数"){
  486. return QString::number(pack->boxInfoAt(index)->tube_number);
  487. }else if(data!="空"){
  488. return data;
  489. }
  490. return "";
  491. }
  492. QSize PackTemlateOne::printSize()
  493. {
  494. return QSize(100,80);
  495. }