#include "boxtemlateone.h" #include "pqQtlib/log/pqlog.h" BoxTemlateOne::BoxTemlateOne() { } //默认箱单 QImage BoxTemlateOne::doPrinter(QSharedPointer box) { QSharedPointer pinfo = box->parentPack(); if(pinfo.isNull()) return QImage(); QSize size(MAXWIDTH*5,MAXHEIGHT*5); QImage image(size,QImage::Format_ARGB32); image.fill(qRgba(255, 255, 255, 255)); QPainter painter(&image); painter.drawRect(5*5,5*5,90*5,15*5); painter.drawRect(5*5,20*5,90*5,35*5); painter.drawLine(20*5,20*5,20*5,55*5); painter.drawLine(50*5,20*5,50*5,55*5); painter.drawLine(66*5,20*5,66*5,55*5); painter.drawLine(5*5,27*5,95*5,27*5); painter.drawLine(5*5,34*5,95*5,34*5); painter.drawLine(5*5,41*5,95*5,41*5); painter.drawLine(5*5,48*5,95*5,48*5); painter.drawRect(5*5,55*5,90*5,15*5); painter.drawRect(5*5,70*5,90*5,7*5); QRect target(0*5, 57*5, 100*5, 65*5); // QRect source(-10*5, 0, 65*5, 40*5); QString bar = box->caseNumber(); code.draw(painter,target,bar); // painter.drawImage(target,barCode.draw(barCode.CodeBinary(bar),bar),source); painter.setRenderHint(QPainter::Antialiasing,true); painter.setRenderHint(QPainter::TextAntialiasing,true); painter.setRenderHint(QPainter::HighQualityAntialiasing,true); QFont font; font.setFamily("宋体"); font.setPixelSize(40); font.setWeight(QFont::ExtraLight); painter.setFont(font); painter.drawText(6*5,15*5,box->parentPack()->customer); font.setPixelSize(20); font.setBold(true); painter.setFont(font); painter.drawText(8*5,25*5,QStringLiteral("品名")); painter.drawText(53*5,25*5,QStringLiteral("毛重")); painter.drawText(8*5,32*5,QStringLiteral("批号")); painter.drawText(53*5,32*5,QStringLiteral("净重")); painter.drawText(8*5,39*5,QStringLiteral("规格")); painter.drawText(53*5,39*5,QStringLiteral("筒数")); painter.drawText(8*5,46*5,QStringLiteral("等级")); painter.drawText(53*5,46*5,QStringLiteral("捻向")); painter.drawText(8*5,53*5,QStringLiteral("箱号")); painter.drawText(50*5,53*5,QStringLiteral("纸管颜色")); painter.drawText(21*5,25*5,pinfo->info()->product_type_code); painter.drawText(21*5,32*5,pinfo->info()->batch_no); painter.drawText(21*5,39*5,pinfo->info()->specs); painter.drawText(67*5,25*5,QString("%1 kg").arg(getDecimalbit(box->gross_weight / 1000.00)));//datalist.at(0)); painter.drawText(67*5,32*5,QString("%1 kg").arg(getDecimalbit(box->net_weight / 1000.00)));//datalist.at(1)); painter.drawText(67*5,39*5,QString::number(box->tube_number));//datalist.at(2)); painter.drawText(21*5,46*5,box->Level);//datalist.at(3)); painter.drawText(67*5,46*5,box->twist_type);//datalist.at(4)); painter.drawText(67*5,53*5,box->bucket_color);//datalist.at(6)); font.setPixelSize(17); painter.setFont(font); painter.drawText(21*5,53*5,box->caseNumber());//datalist.at(5)); painter.drawText(4*5,75*5," 电话:"+ box->parentPack()->telephone); // print(image); QString path = PQ::PQLogManger::this_()->getSaveFilePath(); image.save(path+"/xiangdan/code"+bar+".bmp"); return image; // return img; } //默认箱单2 QImage BoxTemlateOne::doPrinter1(QSharedPointer box) { QSharedPointer pinfo = box->parentPack(); if(pinfo.isNull()) return QImage(); QSize size(MAXWIDTH*5,MAXHEIGHT*5); QImage image(size,QImage::Format_ARGB32); image.fill(qRgba(255, 255, 255, 255)); QPainter painter(&image); painter.drawRect(5*5,5*5,90*5,60*5); painter.drawLine(5*5,14*5,95*5,14*5); painter.drawLine(5*5,23*5,95*5,23*5); painter.drawLine(5*5,32*5,95*5,32*5); painter.drawLine(5*5,41*5,95*5,41*5); painter.drawLine(5*5,50*5,95*5,50*5); painter.drawLine(50*5,32*5,50*5,60*5); painter.drawLine(20*5,5*5,20*5,60*5); painter.drawLine(65*5,32*5,65*5,60*5); painter.drawRect(5*5,60*5,90*5,15*5); // painter.drawRect(5*5,70*5,90*5,7*5); QRect target(0*5, 62*5, 100*5, 70*5); // QRect source(-10*5, 0, 65*5, 40*5); QString bar = box->caseNumber(); code.draw(painter,target,bar); // painter.drawImage(target,barCode.draw(barCode.CodeBinary(bar),bar),source); // painter.setRenderHint(QPainter::Antialiasing,true); // painter.setRenderHint(QPainter::TextAntialiasing,true); // painter.setRenderHint(QPainter::HighQualityAntialiasing,true); QFont font; font.setFamily("宋体"); font.setPixelSize(18); font.setBold(true); painter.setFont(font); painter.drawText(6*5,11*5,QStringLiteral("品 种")); painter.drawText(6*5,20*5,QStringLiteral("规 格")); painter.drawText(6*5,29*5,QStringLiteral("批 号")); painter.drawText(6*5,38*5,QStringLiteral("等 级")); painter.drawText(6*5,47*5,QStringLiteral("净 重")); painter.drawText(6*5,56*5,QStringLiteral("筒 数")); painter.drawText(50*5,38*5,QStringLiteral("纸管颜色")); painter.drawText(51*5,47*5,QStringLiteral("毛 重")); painter.drawText(51*5,56*5,QStringLiteral("箱 号")); // painter.drawRect(text1); font.setPixelSize(20); painter.setFont(font); painter.drawText(QRect(20*5,5*5,75*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,pinfo->info()->product_type_code); painter.drawText(QRect(20*5,14*5,75*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,pinfo->info()->specs); painter.drawText(QRect(20*5,23*5,75*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,pinfo->info()->batch_no); painter.drawText(QRect(20*5,32*5,30*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,box->Level); 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))); painter.drawText(QRect(20*5,50*5,30*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,QString::number(box->tube_number)); painter.drawText(QRect(65*5,32*5,30*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,pinfo->info()->bucket_color); 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))); font.setPixelSize(18); painter.setFont(font); painter.drawText(QRect(65*5,50*5,30*5,9*5),Qt::AlignCenter|Qt::AlignHCenter,box->caseNumber()); // print(image); QString path = PQ::PQLogManger::this_()->getSaveFilePath(); image.save(path+"/xiangdan/code"+bar+".bmp"); return image; // return img; } QImage BoxTemlateOne::doPrinter(QSharedPointer box,int ModelIndex) { boxM = GlobalInfo::this_()->BoxModelList().at(ModelIndex); QSharedPointer pinfo = box->parentPack(); QJsonObject info = pinfo->info()->toObject(); QJsonObject obj = box->toObject(); if(pinfo.isNull()) return QImage(); QSize size(MAXWIDTH*5,MAXHEIGHT*5); QImage image(size,QImage::Format_ARGB32); image.fill(qRgba(255, 255, 255, 255)); QPainter painter(&image); painter.drawRect(5*5,5*5,90*5,15*5); painter.drawRect(5*5,20*5,90*5,35*5); painter.drawLine(20*5,20*5,20*5,55*5); painter.drawLine(50*5,20*5,50*5,55*5); painter.drawLine(66*5,20*5,66*5,55*5); painter.drawLine(5*5,27*5,95*5,27*5); painter.drawLine(5*5,34*5,95*5,34*5); painter.drawLine(5*5,41*5,95*5,41*5); painter.drawLine(5*5,48*5,95*5,48*5); painter.drawRect(5*5,55*5,90*5,15*5); painter.drawRect(5*5,70*5,90*5,7*5); QRect target(0*5, 57*5, 100*5, 65*5); // QRect source(-10*5, 0, 65*5, 40*5); QString bar = box->caseNumber(); code.draw(painter,target,bar); // painter.drawImage(target,barCode.draw(barCode.CodeBinary(bar),bar),source); painter.setRenderHint(QPainter::Antialiasing,true); painter.setRenderHint(QPainter::TextAntialiasing,true); painter.setRenderHint(QPainter::HighQualityAntialiasing,true); QFont font; font.setFamily("宋体"); font.setPixelSize(40); font.setWeight(QFont::ExtraLight); painter.setFont(font); painter.drawText(6*5,15*5,box->parentPack()->customer); font.setPixelSize(20); font.setBold(true); painter.setFont(font); // painter.drawText(8*5,25*5,boxM->text1_1); // painter.drawText(53*5,25*5,boxM->text1_2); // painter.drawText(8*5,32*5,boxM->text2_1); // painter.drawText(53*5,32*5,boxM->text2_2); // painter.drawText(8*5,39*5,boxM->text3_1); // painter.drawText(53*5,39*5,boxM->text3_2); // painter.drawText(8*5,46*5,boxM->text4_1); // painter.drawText(53*5,46*5,boxM->text4_2); // painter.drawText(8*5,53*5,boxM->text5_1); // painter.drawText(50*5,53*5,boxM->text5_2); painter.drawText(8*5,25*5,boxM->Type_Name.at(0).toString()); painter.drawText(53*5,25*5,boxM->Type_Name.at(5).toString()); painter.drawText(8*5,32*5,boxM->Type_Name.at(1).toString()); painter.drawText(53*5,32*5,boxM->Type_Name.at(6).toString()); painter.drawText(8*5,39*5,boxM->Type_Name.at(2).toString()); painter.drawText(53*5,39*5,boxM->Type_Name.at(7).toString()); painter.drawText(8*5,46*5,boxM->Type_Name.at(3).toString()); painter.drawText(53*5,46*5,boxM->Type_Name.at(8).toString()); painter.drawText(8*5,53*5,boxM->Type_Name.at(4).toString()); painter.drawText(53*5,53*5,boxM->Type_Name.at(9).toString()); // painter.drawText(50*5,53*5,boxM->Type_Name.at(9).toString()); painter.drawText(21*5,25*5,FindData(box,boxM->Type_Data.at(0).toString())); painter.drawText(21*5,32*5,FindData(box,boxM->Type_Data.at(1).toString())); painter.drawText(21*5,39*5,FindData(box,boxM->Type_Data.at(2).toString())); painter.drawText(21*5,46*5,FindData(box,boxM->Type_Data.at(3).toString())); painter.drawText(21*5,53*5,FindData(box,boxM->Type_Data.at(4).toString())); painter.drawText(67*5,25*5,FindData(box,boxM->Type_Data.at(5).toString()));//datalist.at(0)); painter.drawText(67*5,32*5,FindData(box,boxM->Type_Data.at(6).toString())); painter.drawText(67*5,39*5,FindData(box,boxM->Type_Data.at(7).toString()));//datalist.at(2)); painter.drawText(67*5,46*5,FindData(box,boxM->Type_Data.at(8).toString()));//datalist.at(4)); painter.drawText(67*5,53*5,FindData(box,boxM->Type_Data.at(9).toString()));//datalist.at(6)); font.setPixelSize(17); painter.setFont(font); painter.drawText(4*5,75*5," 电话:"+ box->parentPack()->telephone); // QString path = PQ::PQLogManger::this_()->getSaveFilePath(); // image.save(path+"/xiangdan/code"+bar+".bmp"); return image; } QString BoxTemlateOne::FindData(QSharedPointer box,QString data){ QSharedPointer pinfo = box->parentPack(); // QJsonObject info = pinfo->info()->toObject(); // QJsonObject obj = box->toObject(); if(data=="品名"){ return pinfo->info()->product_type_code; }else if(data=="批号"){ return pinfo->info()->batch_no; }else if(data=="规格"){ return pinfo->info()->specs; }else if(data=="毛重"){ return QString("%1 kg").arg(getDecimalbit( box->gross_weight / 1000.00)); }else if(data=="净重"){ return QString("%1 kg").arg(getDecimalbit(box->net_weight / 1000.00)); }else if(data=="筒数"){ return QString::number(box->tube_number); }else if(data=="等级"){ return box->Level; }else if(data=="捻向"){ return box->twist_type; }else if(data=="管色"){ return box->bucket_color; }else if(data=="箱号"){ return box->caseNumber(); }else if(data=="类型"){ return pinfo->info()->category; }else if(data=="旦数"){ return pinfo->info()->denier; }else if(data=="分特"){ return pinfo->info()->dtex; }else if(data=="孔数"){ return pinfo->info()->fiber; }else if(data=="颜色"){ return pinfo->info()->color; }else if(data=="皮重"){ return pinfo->info()->box_weight; }else if(data=="筒重"){ return pinfo->info()->bucket_weight; }else if(data!="空"){ return data; } return ""; } QSize BoxTemlateOne::printSize() { return QSize(100,80); } QImage BoxTemlateOne::Boxmodel() { QSize size(MAXWIDTH*5,MAXHEIGHT*5); QImage image(size,QImage::Format_ARGB32); image.fill(qRgba(255, 255, 255, 255)); QPainter painter(&image); painter.drawRect(5*5,5*5,90*5,15*5); painter.drawRect(5*5,20*5,90*5,35*5); painter.drawLine(20*5,20*5,20*5,55*5); painter.drawLine(50*5,20*5,50*5,55*5); painter.drawLine(66*5,20*5,66*5,55*5); painter.drawLine(5*5,27*5,95*5,27*5); painter.drawLine(5*5,34*5,95*5,34*5); painter.drawLine(5*5,41*5,95*5,41*5); painter.drawLine(5*5,48*5,95*5,48*5); painter.drawRect(5*5,55*5,90*5,15*5); painter.drawRect(5*5,70*5,90*5,7*5); QRect target(0*5, 57*5, 100*5, 65*5); QString bar = "200324155812001"; code.draw(painter,target,bar); QFont font; font.setPixelSize(40); painter.setFont(font); painter.drawText(5*5,15*5,"公司名称"); font.setPixelSize(17); painter.setFont(font); painter.drawText(4*5,75*5," 电话:11111111111"); // QString path = PQ::PQLogManger::this_()->getSaveFilePath(); // if(save) // image.save(path+"/xiangdan/code"+"11111"+".bmp"); return image; } PackTemlateOne::PackTemlateOne() {} //默认码单 QImage PackTemlateOne::doPrinter(QSharedPointer pack) { //TODO: 小宋,迁移打印 码单的逻辑 QSize size(MAXWIDTH*5,MAXHEIGHT*5); QImage image(size,QImage::Format_ARGB32); image.fill(qRgba(255, 255, 255, 255)); QPainter painter(&image); painter.drawRect(4*5,4*5,92*5,68*5); QFont font; font.setFamily("宋体"); font.setPixelSize(30); font.setWeight(QFont::ExtraLight); painter.setFont(font); painter.drawText(38*5,10*5,QStringLiteral("入 库 单")); font.setPixelSize(20); painter.setFont(font); painter.drawText(8*5,15*5,QStringLiteral("规格:")); painter.drawText(59*5,15*5,QStringLiteral("类型:")); painter.drawText(8*5,21*5,QStringLiteral("批号:")); painter.drawText(59*5,21*5,QStringLiteral("等级:")); font.setPixelSize(15); painter.setFont(font); painter.drawText(8*5,64*5,QStringLiteral("总数")); painter.drawText(38*5,64*5,QStringLiteral("总重量")); painter.drawText(68*5,64*5,QStringLiteral("总筒数")); // QFont font; font.setPixelSize(15); painter.setFont(font); int boxSize = pack->boxes().size(); for(int i = 0; i < boxSize; ++i){ int line = i / 5; int cloun = i % 5; painter.drawText((9 + line * 19)*5,(27 + cloun * 6)*5,QString("%1.").arg(i + 1)); } QRect target(0*5, 67*5, 100*5, 75*5); QString bar = pack->codeSingle(); code.draw(painter,target,bar); font.setPixelSize(20); font.setFamily("黑体"); painter.setFont(font); painter.drawText(19*5,15*5,pack->info()->specs);//QStringLiteral("规格")); painter.drawText(70*5,15*5,pack->info()->category);//QStringLiteral("类型")); painter.drawText(19*5,21*5,pack->info()->batch_no);//QStringLiteral("批号")); painter.drawText(70*5,21*5,pack->level);//info.at(0)); for(int i = 0; i < boxSize; ++i) { QString code = getDecimalbit(pack->boxes().at(i)->net_weight / 1000.00); int line = i / 5; int cloun = i % 5; painter.drawText((13 + line * 19)*5,(27.5 + cloun * 6 )*5 ,code); } painter.drawText(15*5,64*5,QString::number(pack->boxes().size())); painter.drawText(48*5,64*5,QString("%1 kg").arg(getDecimalbit(pack->net_weight() / 1000.00))); painter.drawText(78*5,64*5,QString::number(pack->tube_number())); // QString path = PQ::PQLogManger::this_()->getSaveFilePath(); // image.save(path+"/rukudan/code"+bar+".bmp"); return image; } QImage PackTemlateOne::doPrinter(QSharedPointer pack, int ModelIndex) { //TODO: 小宋,迁移打印 码单的逻辑 packM = GlobalInfo::this_()->PackModelList().at(ModelIndex); QSize size(MAXWIDTH*5,MAXHEIGHT*5); QImage image(size,QImage::Format_ARGB32); image.fill(qRgba(255, 255, 255, 255)); QPainter painter(&image); painter.drawRect(4*5,4*5,92*5,68*5); QFont font; font.setFamily("宋体"); font.setPixelSize(30); font.setWeight(QFont::ExtraLight); painter.setFont(font); painter.drawText(38*5,10*5,QStringLiteral("入 库 单")); font.setPixelSize(20); painter.setFont(font); painter.drawText(8*5,15*5,packM->Type_Name.at(0).toString()); painter.drawText(59*5,15*5,packM->Type_Name.at(1).toString()); painter.drawText(8*5,21*5,packM->Type_Name.at(2).toString()); painter.drawText(59*5,21*5,packM->Type_Name.at(3).toString()); font.setPixelSize(15); painter.setFont(font); painter.drawText(8*5,64*5,packM->Type_Name.at(4).toString()); painter.drawText(38*5,64*5,packM->Type_Name.at(5).toString()); painter.drawText(68*5,64*5,packM->Type_Name.at(6).toString()); // QFont font; font.setPixelSize(15); painter.setFont(font); int boxSize = pack->boxes().size(); for(int i = 0; i < boxSize; ++i){ int line = i / 5; int cloun = i % 5; painter.drawText((9 + line * 19)*5,(27 + cloun * 6)*5,QString("%1.").arg(i + 1)); } QRect target(0*5, 67*5, 100*5, 75*5); QString bar = pack->codeSingle(); code.draw(painter,target,bar); font.setPixelSize(20); font.setFamily("黑体"); painter.setFont(font); painter.drawText(19*5,15*5,FindData(pack,packM->Type_Data.at(0).toString()));//QStringLiteral("规格")); painter.drawText(70*5,15*5,FindData(pack,packM->Type_Data.at(1).toString()));//QStringLiteral("类型")); painter.drawText(19*5,21*5,FindData(pack,packM->Type_Data.at(2).toString()));//QStringLiteral("批号")); painter.drawText(70*5,21*5,FindData(pack,packM->Type_Data.at(3).toString()));//info.at(0)); for(int i = 0; i < boxSize; ++i) { QString code = Find20Data(pack,packM->Type_Data.at(4).toString(),i); int line = i / 5; int cloun = i % 5; painter.drawText((13 + line * 19)*5,(27.5 + cloun * 6 )*5 ,code); } painter.drawText(15*5,64*5,FindData(pack,packM->Type_Data.at(5).toString())); painter.drawText(48*5,64*5,FindData(pack,packM->Type_Data.at(6).toString())); painter.drawText(78*5,64*5,FindData(pack,packM->Type_Data.at(7).toString())); // QString path = PQ::PQLogManger::this_()->getSaveFilePath(); // image.save(path+"/rukudan/code"+bar+".bmp"); return image; } QImage PackTemlateOne::Packmodel() { QSize size(MAXWIDTH*5,MAXHEIGHT*5); QImage image(size,QImage::Format_ARGB32); image.fill(qRgba(255, 255, 255, 255)); QPainter painter(&image); painter.drawRect(4*5,4*5,92*5,68*5); QFont font; font.setFamily("宋体"); font.setPixelSize(30); font.setWeight(QFont::ExtraLight); painter.setFont(font); painter.drawText(38*5,10*5,QStringLiteral("入 库 单")); QRect target(0*5, 67*5, 100*5, 75*5); QString bar = "0000200313170054032"; code.draw(painter,target,bar); font.setPixelSize(20); font.setFamily("黑体"); return image; } QString PackTemlateOne::FindData(QSharedPointer pack, QString data) { if(data=="批号"){ return pack->info()->batch_no; }else if(data=="类型"){ return pack->info()->category; }else if(data=="品种"){ return pack->info()->product_type_code; }else if(data=="旦数"){ return pack->info()->denier; }else if(data=="分特"){ return pack->info()->dtex; }else if(data=="等级"){ return pack->level; }else if(data=="孔数"){ return pack->info()->fiber; }else if(data=="规格"){ return pack->info()->specs; }else if(data=="颜色"){ return pack->info()->color; }else if(data=="捻向"){ return pack->info()->twist_type; }else if(data=="管色"){ return pack->info()->bucket_color; }else if(data=="皮重"){ return pack->info()->box_weight; }else if(data=="机台"){ return pack->info()->machine_no; }else if(data=="纸箱"){ return pack->info()->carton_type; }else if(data=="总筒数"){ return QString::number(pack->tube_number()); }else if(data=="总毛重"){ return QString("%1 kg").arg(getDecimalbit(pack->gross_weight() / 1000.00)); }else if(data=="总净重"){ return QString("%1 kg").arg(getDecimalbit(pack->net_weight() / 1000.00)); }else if(data!="空"){ return data; } return ""; } QString PackTemlateOne::Find20Data(QSharedPointer pack, QString data, int index) { if(data=="毛重"){ return QString("%1 kg").arg(getDecimalbit(pack->boxInfoAt(index)->gross_weight / 1000.00)); }else if(data=="净重"){ return QString("%1 kg").arg(getDecimalbit(pack->boxInfoAt(index)->net_weight / 1000.00)); }else if(data=="筒重"){ return QString::number(pack->boxInfoAt(index)->tube_number); }else if(data=="捻向"){ return pack->boxInfoAt(index)->twist_type; }else if(data=="管色"){ return pack->boxInfoAt(index)->bucket_color; }else if(data=="总筒重"){ return QString("%1 kg").arg(getDecimalbit(pack->boxInfoAt(index)->bucket_weight / 1000.00)); }else if(data=="筒数"){ return QString::number(pack->boxInfoAt(index)->tube_number); }else if(data!="空"){ return data; } return ""; } QSize PackTemlateOne::printSize() { return QSize(100,80); }