autopackform.cpp 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. #include "autopackform.h"
  2. #include "ui_autopackform.h"
  3. #include "globalinfo.h"
  4. #include <QMessageBox>
  5. #include <QTimer>
  6. AutoPackForm::AutoPackForm(QWidget *parent) :
  7. QWidget(parent),
  8. ui(new Ui::AutoPackForm)
  9. {
  10. ui->setupUi(this);
  11. QTimer *timer = new QTimer(this);
  12. connect(timer,&QTimer::timeout,this,&AutoPackForm::scaleData);
  13. timer->start(500);
  14. ui->addBoxList->setDisabled(true);
  15. ui->addPackList->setDisabled(true);
  16. netNum = 0.00;
  17. ui->widgetTotle->hide();
  18. }
  19. AutoPackForm::~AutoPackForm()
  20. {
  21. delete ui;
  22. }
  23. //从秤中获取毛重、皮重、净重、筒数------每100毫秒一次
  24. void AutoPackForm::scaleData()
  25. {
  26. ui->grossWeight_2->setText(QString::number(GlobalInfo::this_()->GetScaleData().gross_widget));
  27. ui->tareWeight_2->setText(QString::number(ui->pizhong->currentText().toDouble()));
  28. netNum = ui->grossWeight_2->text().toDouble()-ui->tareWeight_2->text().toDouble();
  29. if(netNum<0){
  30. netNum = 0.00;
  31. }
  32. ui->netWeight_2->setText(QString::number(netNum));
  33. // ui->tongshu->setText(QString::number(GlobalInfo::this_()->GetScaleData().tongshu));
  34. }
  35. void AutoPackForm::init()
  36. {
  37. // TODO: 页面进入初始化
  38. ui->pushStart->setChecked(false);
  39. ui->addBoxList->setDisabled(true);
  40. ui->addPackList->setDisabled(true);
  41. ui->widget->setEnabled(true);
  42. packConfig.refConfig();
  43. connect(&packConfig,&RemotePackConfig::configUpdate,this,&AutoPackForm::upconfig);
  44. connect(&packConfig,&RemotePackConfig::dengJIConfigUp,this,&AutoPackForm::upDengjiInfo);
  45. ui->comboBox->clear();
  46. for(int i = 1;i<=20;i++){
  47. ui->comboBox->addItem(QString::number(i));
  48. }
  49. ui->comboBox->setCurrentText("20");
  50. on_addPackList_clicked();
  51. }
  52. void AutoPackForm::on_pushBack_clicked()
  53. {
  54. aputils.insertProductSQL(packinfo);
  55. aputils.doSend(aputils.toJson(packinfo));
  56. emit back();
  57. }
  58. void AutoPackForm::on_addPackList_clicked()
  59. {
  60. if(!packinfo.isNull()&&packinfo->boxes().size()>0){
  61. //packinfo其他数据在new时已经定义好的,需要时直接调就可以了,所以这里只要箱数,等级,机台和类型
  62. packinfo->quantity = packinfo->boxes().size();
  63. packinfo->level_id = ui->dengji->currentData().toInt();
  64. packinfo->machine_no = ui->jitai->currentText();
  65. packinfo->carton_type = ui->zhixiang->currentText();
  66. }
  67. // qDebug()<<aputils.toJson(packinfo);
  68. //把数据添加到数据库里
  69. aputils.insertProductSQL(packinfo);
  70. //TODO: 缓存箱单数据,页面显示情空
  71. //发送码单 packinfo 数据, 转换为 json数据发送
  72. aputils.doSend(aputils.toJson(packinfo));
  73. //TODO: 初始化码单信息
  74. packinfo.reset(new PackInfo(_info));
  75. packinfo->operator_id = GlobalInfo::this_()->user().userId;
  76. packinfo->packing_time = QDate::currentDate().toString("yy-MM-dd");
  77. packinfo->packing_type = _info.category;
  78. }
  79. void AutoPackForm::on_pushStart_clicked()
  80. {
  81. if(ui->pushStart->isChecked()){
  82. ui->pushStart->setChecked(true);
  83. ui->addBoxList->setDisabled(false);
  84. ui->addPackList->setDisabled(false);
  85. ui->widget->setEnabled(false);
  86. ui->handleRead->setEnabled(true);
  87. } else {
  88. init();
  89. }
  90. }
  91. void AutoPackForm::on_addBoxList_clicked()
  92. {
  93. if(ui->tongshu->text()!="0"&&!ui->tongshu->text().toInt()){
  94. QMessageBox::information(this,tr("注意"),tr("筒数异常"));
  95. return;
  96. }
  97. if(ui->netWeight_2->text().at(0)=="-"){
  98. QMessageBox::information(this,tr("注意"),tr("打包数据异常"));
  99. return;
  100. }
  101. if(packinfo.isNull()) return;
  102. auto box = packinfo->addBoxInfo();
  103. //TODO: 添加箱单 数据
  104. box->box_weight = int(ui->pizhong->currentText().toDouble()*1000);
  105. box->tube_number = ui->tongshu->text().toInt();
  106. box->bucket_weight = int(ui->pizhong->currentText().toInt()*ui->tongshu->text().toDouble()*1000);
  107. box->gross_weight = int(ui->grossWeight_2->text().toDouble()*1000);
  108. box->net_weight = int(ui->netWeight_2->text().toDouble()*1000);
  109. box->sort = "1";
  110. box->remark = ui->beizhu->toPlainText();
  111. packinfo->level = ui->dengji->currentText();
  112. packinfo->level_id = ui->dengji->currentData().toInt();
  113. //TODO: 缓存数据,显示数据
  114. ui->tableWidget->setRowCount(ui->tableWidget->rowCount()+1);
  115. ui->tableWidget->setItem(ui->tableWidget->rowCount()-1,0,new QTableWidgetItem(QString::number(ui->tableWidget->rowCount())));
  116. ui->tableWidget->setItem(ui->tableWidget->rowCount()-1,1,new QTableWidgetItem(box->caseNumber()));
  117. ui->tableWidget->setItem(ui->tableWidget->rowCount()-1,2,new QTableWidgetItem(QString::number(box->tube_number)));
  118. ui->tableWidget->setItem(ui->tableWidget->rowCount()-1,3,new QTableWidgetItem(QString::number(box->gross_weight)));
  119. ui->tableWidget->setItem(ui->tableWidget->rowCount()-1,4,new QTableWidgetItem(QString::number(box->bucket_weight)));
  120. ui->tableWidget->setItem(ui->tableWidget->rowCount()-1,5,new QTableWidgetItem(QString::number(box->net_weight)));
  121. // emit djmbbox(djmb.printBoxInfo(box->caseNumber(),box));
  122. // qDebug()<<packinfo->boxes().size();
  123. // doSend(packinfo);
  124. // 把box数据添加到packinfo的boxes数据表里;
  125. packinfo->addBoxInfoList(box);
  126. //添加数据库
  127. aputils.insertDetailsSQL(box,packinfo->codeSingle());
  128. //当当前箱数大于等于最大箱数是启动on_addPackList_clicked();
  129. if(packinfo->boxes().size()>=ui->comboBox->currentText().toInt()){
  130. // emit djmbbox(djmb.printPackInfo(packinfo->codeSingle(),packinfo));
  131. on_addPackList_clicked();
  132. // qDebug()<<"这里";
  133. }
  134. }
  135. void AutoPackForm::upconfig(const DaBaoConfig &config)
  136. {
  137. // TODO:打包配置更新
  138. //机台
  139. ui->jitai->clear();
  140. ui->jitai->addItems(config.jitai);
  141. //打包工班次
  142. ui->comboBox_2->clear();
  143. ui->comboBox_2->addItems(config.daBaoGongBanCi);
  144. //皮重
  145. ui->pizhong->clear();
  146. for(int i = 0;i<config.xiangzhong.size();i++){
  147. ui->pizhong->addItem(QString::number(config.xiangzhong.at(i)));
  148. }
  149. //管色
  150. ui->guanse->clear();
  151. ui->guanse->addItems(config.guanse);
  152. //捻向
  153. ui->nianxiang->clear();
  154. ui->nianxiang->addItems(config.nianxiang);
  155. //纸箱
  156. ui->zhixiang->clear();
  157. ui->zhixiang->addItems(config.zhixiang);
  158. //筒重
  159. ui->tongzhong->clear();
  160. for(int i = 0;i<config.tongZhong.size();i++){
  161. ui->tongzhong->addItem(QString::number(config.tongZhong.at(i)));
  162. }
  163. }
  164. void AutoPackForm::upDengjiInfo(const QList<DengJiConfigItem> & dengJis)
  165. {
  166. // TODO: 等级信息更新
  167. ui->dengji->clear();
  168. for(int i = 0;i<dengJis.size();i++){
  169. if(!dengJis.at(i).isEnable){
  170. ui->dengji->addItem(dengJis.at(i).value,dengJis.at(i).id);
  171. }
  172. }
  173. }
  174. void AutoPackForm::on_handleRead_clicked()
  175. {
  176. scaleData();
  177. }
  178. void AutoPackForm::on_pushSync_clicked()
  179. {
  180. }