boxtemlateone.cpp 22 KB

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