#include "fixedweightpackform.h" #include "ui_fixedweightpackform.h" #include #include "editboxinfodialog.h" using namespace PQ; FixedWeightPackForm::FixedWeightPackForm(QWidget *parent) : QWidget(parent), ui(new Ui::FixedWeightPackForm),packServer(nullptr),Manger(nullptr) { ui->setupUi(this); // QTimer *timer = new QTimer(this); // connect(timer,&QTimer::timeout,this,&FixedWeightPackForm::calcData); // timer->start(500); connect(glo,&GlobalInfo::dbConfigUpdated,this,&FixedWeightPackForm::upconfig); connect(glo,&GlobalInfo::dengJiUped,this,&FixedWeightPackForm::upDengjiInfo); connect(glo,&GlobalInfo::doInited,this,&FixedWeightPackForm::changeSpecs); auto dt = CacheFile::readFile("dingzhongInfo.cache"); auto list = QString::fromUtf8(dt).split("[,]"); if(list.size() == 2){ ui->taitou->setText(list.at(0)); ui->taiPhone->setText(list.at(1)); } ui->tableWidget_2->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); // packServer = new PackInfoSeed2Server(Manger); // todo: 暂时隐藏同步 // ui->pushNoSyncList->hide(); // ui->pushSync->hide(); } FixedWeightPackForm::~FixedWeightPackForm() { delete ui; } //从秤中获取毛重、皮重、净重、筒数------每100毫秒一次 void FixedWeightPackForm::calcData() { double pz = ui->pizhong->currentText().toDouble(); double tz = ui->tongzhong->currentText().toDouble(); double ts = ui->tongshu->text().toDouble(); if(ui->showMaoZhong->isChecked()){ gross_weight = ui->grossWeight_2->text().toDouble(); netNum = gross_weight - pz - tz * ts; } else { netNum = ui->grossWeight_2->text().toDouble(); gross_weight = netNum + pz + ts*ts; } } void FixedWeightPackForm::on_pushBack_clicked() { emit back(); QStringList list; list << ui->taitou->text() << ui->taiPhone->text(); PQ::CacheFile::writeFile("dingzhongInfo.cache",list.join("[,]").toUtf8()); } void FixedWeightPackForm::on_addPackList_clicked() { if(packinfo.isNull()) return; if(!packinfo.isNull()&&packinfo->boxes().size()>0){ packinfo->quantity = packinfo->boxes().size(); packinfo->level_id = ui->dengji->currentData().toInt(); packinfo->machine_no = ui->jitai->currentText(); packinfo->carton_type = ui->zhixiang->currentText(); packinfo->customer = ui->taitou->text(); packinfo->telephone = ui->taiPhone->text(); } // qDebug()<boxes().at(0)->tube_number; if(ui->autoSync->isChecked() && !GlobalInfo::this_()->isNoLine()) packServer->send(packinfo); Manger->savePackInfo(packinfo); // GlobalInfo::this_()->packInfoManger()->setPackInfoSync(packinfo->codeSingle(),packinfo->time(),true); if(ui->madanPrint->isChecked()) GlobalInfo::this_()->printerPack(packinfo); packinfo.clear(); } void FixedWeightPackForm::on_addBoxList_clicked() { checkPackInfo(); //检查packinfo isNull //当当前箱数大于等于最大箱数是启动on_addPackList_clicked(); if(packinfo->boxes().size() >= ui->comboBox->currentText().toInt()){ on_addPackList_clicked(); checkPackInfo(); } auto index = packinfo->boxInfoSize(); auto box = packinfo->addBoxInfo(); calcData(); box->box_weight = int(ui->pizhong->currentText().toDouble()*1000); box->tube_number = ui->tongshu->text().toInt(); box->bucket_weight = int(ui->tongzhong->currentText().toInt()*ui->tongshu->text().toDouble()*1000); box->gross_weight = int(gross_weight*1000); box->net_weight = int(netNum*1000); box->Level = ui->dengji->currentText(); box->twist_type = ui->nianxiang->currentText(); box->bucket_color = ui->guanse->currentText(); box->sort = "1"; // box->remark = ui->beizhu->toPlainText(); packinfo->level = ui->dengji->currentText(); packinfo->level_id = ui->dengji->currentData().toInt(); addTableWidget(box,index); // 把box数据添加到packinfo的boxes数据表里; packinfo->addBoxInfoList(box); if(ui->xiangdanPrint->isChecked()) GlobalInfo::this_()->printerBox(box); upSum(); //添加数据库 // aputils.insertDetailsSQL(box,packinfo->codeSingle()); } void FixedWeightPackForm::upSum() { if(packinfo.isNull()){ ui->labelTongZHong->setText("0"); ui->labelWight->setText("0"); ui->labelJing->setText("0"); } else { ui->labelTongZHong->setText(QString::number(packinfo->tube_number())); ui->labelWight->setText(getDecimalbit(packinfo->gross_weight() / 1000.00)); ui->labelJing->setText(getDecimalbit(packinfo->net_weight() / 1000.00)); } } //检查packinfo isNull void FixedWeightPackForm::checkPackInfo() { if(packinfo.isNull()){ packinfo.reset(new PackInfo(_info)); packinfo->operator_id = GlobalInfo::this_()->user().userId; packinfo->packing_time = QDate::currentDate().toString("yy-MM-dd"); packinfo->packing_type = _info->category; packinfo->packType = 0; restTableWidget(); } } //往tablewidget里添加数据 void FixedWeightPackForm::addTableWidget(QSharedPointer box, int row) { ui->tableWidget->insertRow(row); ui->tableWidget->setItem(row,0,new QTableWidgetItem(QString::number(box->tube_number))); ui->tableWidget->setItem(row,1,new QTableWidgetItem(getDecimalbit(box->gross_weight / 1000.00))); ui->tableWidget->setItem(row,2,new QTableWidgetItem(getDecimalbit(box->box_weight / 1000.00))); ui->tableWidget->setItem(row,3,new QTableWidgetItem(getDecimalbit(box->net_weight / 1000.00))); ui->tableWidget->setItem(row,4,new QTableWidgetItem(box->caseNumber())); QWidget *tmp_widget = new QWidget(); QHBoxLayout *tmp_layout = new QHBoxLayout(tmp_widget); auto btn_1 = new QPushButton("删除",tmp_widget); auto btn_2 = new QPushButton("修改",tmp_widget); auto btn_3 = new QPushButton("补打",tmp_widget); tmp_layout->addWidget(btn_1); tmp_layout->addWidget(btn_2); tmp_layout->addWidget(btn_3); tmp_layout->setMargin(0); int i = row; connect(btn_1,&QPushButton::clicked,[i,this](){this->del_clicked(i);}); connect(btn_2,&QPushButton::clicked,[i,this](){this->edit_clicked(i);}); connect(btn_3,&QPushButton::clicked,[i,this](){this->Makeup_clicked(i);}); ui->tableWidget->setCellWidget(row,5,tmp_widget); } void FixedWeightPackForm::init() { if(packServer == nullptr){ Manger = GlobalInfo::this_()->packInfoManger(); packServer = new PackInfoSeed2Server(Manger); } ui->pizhong->setCurrentText(QString(_info->box_weight)); ui->guanse->setCurrentText(_info->bucket_color); ui->zhixiang->setCurrentText(_info->carton_type); ui->tongzhong->setCurrentText(_info->bucket_weight); restTableWidget(); } void FixedWeightPackForm::upconfig() { DaBaoConfig config = glo->dbConfig(); // 码数 ui->comboBox->clear(); for(int i = 0; i < config.mashu.size(); ++i){ ui->comboBox->addItem(QString::number(config.mashu.at(i))); } //机台 ui->jitai->clear(); ui->jitai->addItems(config.jitai); //打包工班次 ui->comboBox_2->clear(); ui->comboBox_2->addItems(config.daBaoGongBanCi); //皮重 ui->pizhong->clear(); for(int i = 0;ipizhong->addItem(QString::number(config.xiangzhong.at(i))); } //管色 ui->guanse->clear(); ui->guanse->addItems(config.guanse); //捻向 ui->nianxiang->clear(); ui->nianxiang->addItems(config.nianxiang); //纸箱 ui->zhixiang->clear(); ui->zhixiang->addItems(config.zhixiang); //筒重 ui->tongzhong->clear(); for(int i = 0;itongzhong->addItem(QString::number(config.tongZhong.at(i))); } } void FixedWeightPackForm::upDengjiInfo() { QList dengJis = glo->dengJiList(); ui->dengji->clear(); for(int i = 0;idengji->addItem(dengJis.at(i).value,dengJis.at(i).id); } } } void FixedWeightPackForm::on_pushPiLiang_clicked() { // int tsize = 0; // if(!packinfo.isNull()) tsize = packinfo->boxes().size(); auto size = ui->spinBox->value(); for(int i = 0; i < size; ++i){ on_addBoxList_clicked(); } } //获取品目信息 void FixedWeightPackForm::on_searchButton_clicked() { auto str = ui->lineEdit->text(); if(str.isEmpty()){ updateTableWidget(prolist); } else { auto list = GlobalInfo::this_()->searchProject(str); updateTableWidget(list); } } void FixedWeightPackForm::changeSpecs() { prolist = GlobalInfo::this_()->project().values(); updateTableWidget(prolist); } void FixedWeightPackForm::updateTableWidget(QList> & list) { ui->tableWidget_2->clearContents(); ui->tableWidget_2->setRowCount(0); int currt = -1; for(int i = 0; i < list.size(); ++i){ auto & v = list.at(i); ui->tableWidget_2->insertRow(i); auto xuanze_btn = new QRadioButton(); QString batchno = prolist.at(i)->batch_no; connect(xuanze_btn,&QPushButton::clicked,[batchno,this](){this->xuanZe_clicked(batchno);}); ui->tableWidget_2->setCellWidget(i,0,xuanze_btn); ui->tableWidget_2->setItem(i,1,new QTableWidgetItem(v->specs)); ui->tableWidget_2->setItem(i,2,new QTableWidgetItem(v->category)); ui->tableWidget_2->setItem(i,3,new QTableWidgetItem(v->batch_no)); ui->tableWidget_2->setItem(i,4,new QTableWidgetItem(v->color)); if(!_info.isNull() && _info->batch_no == v->batch_no){ xuanze_btn->setChecked(true); currt = i; } } if(currt >= 0) ui->tableWidget_2->setCurrentCell(currt,0); } void FixedWeightPackForm::setProInfo(const QSharedPointer & info) { _info = info; if(!packinfo.isNull()){ packinfo->upInfo(_info); packinfo->packing_type = _info->category; } init(); } void FixedWeightPackForm::xuanZe_clicked(QString batchno) { setProInfo(GlobalInfo::this_()->project().value(batchno)); } void FixedWeightPackForm::del_clicked(int row) { if(packinfo.isNull()) return; qDebug()<delBoxInfoAt(row); restTableWidget(); } void FixedWeightPackForm::restTableWidget() { ui->tableWidget->clearContents(); ui->tableWidget->setRowCount(0); ui->tableWidget->setColumnWidth(0,20); ui->tableWidget->setColumnWidth(1,20); ui->tableWidget->setColumnWidth(2,80); ui->tableWidget->setColumnWidth(3,80); ui->tableWidget->setColumnWidth(4,200); ui->tableWidget->setColumnWidth(5,200); if(!packinfo.isNull()){ for(int i = 0; i < packinfo->boxInfoSize(); ++i){ addTableWidget(packinfo->boxInfoAt(i),i); } } upSum(); } void FixedWeightPackForm::Makeup_clicked(int row) { if(packinfo.isNull()) return; auto box = packinfo->boxInfoAt(row); GlobalInfo::this_()->printerBox(box); } void FixedWeightPackForm::edit_clicked(int row) { if(packinfo.isNull()) return; auto box = packinfo->boxInfoAt(row); EditBoxInfoDialog dig(box,this); dig.exec(); restTableWidget(); } void FixedWeightPackForm::on_pushContinue_clicked() { auto dt = QDate::currentDate(); auto list = Manger->getPackInfo(dt); if(list.isEmpty()){ dt = dt.addDays(-1); list = Manger->getPackInfo(dt); } if(list.isEmpty()){ QMessageBox::warning(this,tr("无可接续码单"),tr("无可接续码单")); } std::sort(list.begin(),list.end(),[](const PackSaveInfo & item1, const PackSaveInfo & item2){ return item1.packInfo->time() < item2.packInfo->time(); }); QSharedPointer pInfo; for (int i = list.size() - 1;i >= 0 ; --i) { auto & v = list.at(i); if(v.packInfo->packType != 0) continue; if(v.packInfo->boxInfoSize() < ui->comboBox->currentText().toInt()){ pInfo = v.packInfo; break; } } if(pInfo.isNull()){ QMessageBox::warning(this,tr("无可接续码单"),tr("无可接续码单")); } packinfo = pInfo; setProInfo(packinfo->info()); } void FixedWeightPackForm::on_showMaoZhong_stateChanged(int ) { if(ui->showMaoZhong->isChecked()){ ui->labelWidget->setText(tr("毛重")); } else { ui->labelWidget->setText(tr("净重")); } } void FixedWeightPackForm::on_pushEditBatch_clicked() { if(packinfo.isNull()) return; for(int i = 0; i < packinfo->boxInfoSize(); ++i){ auto box = packinfo->boxInfoAt(i); calcData(); box->box_weight = int(ui->pizhong->currentText().toDouble()*1000); box->tube_number = ui->tongshu->text().toInt(); box->bucket_weight = int(ui->pizhong->currentText().toInt()*ui->tongshu->text().toDouble()*1000); box->gross_weight = int(gross_weight*1000); box->net_weight = int(netNum*1000); box->Level = ui->dengji->currentText(); box->twist_type = ui->nianxiang->currentText(); box->bucket_color = ui->guanse->currentText(); box->sort = "1"; // box->remark = ui->beizhu->toPlainText(); } packinfo->level = ui->dengji->currentText(); packinfo->level_id = ui->dengji->currentData().toInt(); restTableWidget(); } void FixedWeightPackForm::on_pushNoSyncList_clicked() { qDebug()<<"this"; emit NoSyncList(); }