boxtemlateone.cpp 25 KB

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