autopackform.cpp 8.4 KB

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