packdetailform.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. #include "packdetailform.h"
  2. #include "ui_packdetailform.h"
  3. #include "packinfo.h"
  4. #include <pqQtlib/utils/pqfileutils.h>
  5. PackDetailForm::PackDetailForm(QWidget *parent) :
  6. QWidget(parent),
  7. ui(new Ui::PackDetailForm)
  8. {
  9. ui->setupUi(this);
  10. productList();
  11. detailsList();
  12. ui->treeWidget->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
  13. }
  14. PackDetailForm::~PackDetailForm()
  15. {
  16. delete ui;
  17. }
  18. void PackDetailForm::on_pushBack_clicked()
  19. {
  20. emit back();
  21. }
  22. void PackDetailForm::on_pushButton_clicked()
  23. {
  24. nowPageNum = 0;
  25. // changeTable(database.GetValues("product",productSqlList));
  26. QString condition = "";
  27. if(!ui->codeSingleLine->text().isEmpty()){
  28. condition.append("code_single="+ui->codeSingleLine->text()+" ");
  29. }
  30. if(!ui->batch_noLine->text().isEmpty()){
  31. if(!condition.isEmpty()){
  32. condition.append("and ");
  33. }
  34. condition.append("batch_no="+ui->batch_noLine->text()+" ");
  35. }
  36. if(!condition.isEmpty()){
  37. condition = "where "+ condition;
  38. }
  39. condition.append("limit 0,20");
  40. // qDebug()<<condition;
  41. // changeTreeWidget(database.GetValues("product",productSqlList,/*"limit 0,20"*/condition));
  42. //// ui->pagesNum->setText(QString::number(pageNum)+"/"+QString::number(product.size()/20));
  43. // int pageListNum = database.GetTablePage();
  44. // pageNumAll = pageListNum / 20;
  45. // if(pageListNum % 20 > 0)
  46. // pageNumAll ++;
  47. ui->pagesNum->setText(QString("%1/%2").arg(nowPageNum+1).arg(pageNumAll));
  48. }
  49. //往treewidget添加数据
  50. void PackDetailForm::changeTreeWidget(QList<QMap<QString,QString>> productList)
  51. {
  52. if(productList.isEmpty()){
  53. QMessageBox::information(this,tr("提示"),tr("数据为空"));
  54. return;
  55. }
  56. ui->treeWidget->clear();
  57. product = productList;
  58. /******************************************************************/
  59. //循环添加数据
  60. for(int i = 0;i<productList.size();i++){
  61. QStringList list;
  62. list.append(productList.at(i).value("tongbu") == "0" ? "未同步" : "已同步");
  63. if(productList.at(i).value("tongbu") == "0"){
  64. }
  65. list.append(productList.at(i).value("code_single"));
  66. list.append(productList.at(i).value("batch_no"));
  67. list.append(getDecimalbit(productList.at(i).value("gross_weight").toDouble()/1000.00));
  68. list.append(getDecimalbit(productList.at(i).value("net_weight").toDouble()/1000.00));
  69. list.append(productList.at(i).value("quantity"));
  70. auto item = new QTreeWidgetItem(list);
  71. auto tongbu_btn = new QPushButton("同步");
  72. connect(tongbu_btn,&QPushButton::clicked,[item,i,this](){this->tongbu_clicked(item,i);});
  73. // connect(tongbu_btn, SIGNAL(clicked(bool)), this, SLOT(tongbu_clicked()));
  74. auto code_single_btn = new QPushButton("打印码单");
  75. connect(code_single_btn,&QPushButton::clicked,[i,this](){this->code_single_clicked(i);});
  76. auto case_nember_btn = new QPushButton("打印箱单");
  77. connect(case_nember_btn,SIGNAL(clicked(bool)),this,SLOT(case_number_clicked()));
  78. ui->treeWidget->addTopLevelItem(item);
  79. ui->treeWidget->setItemWidget(item,7,tongbu_btn);
  80. ui->treeWidget->setItemWidget(item,8,code_single_btn);
  81. ui->treeWidget->setItemWidget(item,9,case_nember_btn);
  82. details = database.GetValues("details",detailSqlList," where code_single = "+product.at(i).value("code_single"));
  83. /*************************子项目****************************/
  84. //treewidget子项目标题
  85. QStringList columItemList;
  86. QTreeWidgetItem *child;
  87. columItemList<<"箱号"<<"毛重(千克/kg)"<<"净重(千克/kg)";
  88. child = new QTreeWidgetItem(columItemList);
  89. item->addChild(child);
  90. ui->treeWidget->setCurrentItem(child);
  91. //treewidget子项目数据循环添加
  92. for(int i=0; i<details.length(); ++i)
  93. {
  94. QStringList columItemList;
  95. QTreeWidgetItem *child;
  96. columItemList<<details.at(i).value("case_number")<<QString::number(details.at(i).value("gross_weight").toDouble()/1000)<<QString::number(details.at(i).value("net_weight").toDouble()/1000);
  97. child = new QTreeWidgetItem(columItemList);
  98. item->addChild(child);
  99. ui->treeWidget->setCurrentItem(child);
  100. }
  101. }
  102. /**************************************************************/
  103. ui->pageDataNum->setText("本页数据:"+QString::number(product.length()));
  104. ui->pagesNum->setText(QString("%1/%2").arg(nowPageNum+1).arg(pageNumAll));
  105. }
  106. //同步按钮
  107. void PackDetailForm::tongbu_clicked(QTreeWidgetItem * item,int row)
  108. {
  109. // qDebug()<<item->text(0);
  110. if(item->text(0) != "未同步"){
  111. QMessageBox::information(this,tr("提示"),tr("请刷新"));
  112. return;
  113. }
  114. QString condition = " where code_single="+product.at(row).value("code_single");
  115. details = database.GetValues("details",detailSqlList,condition);
  116. autoPack.doSend(autoPack.toJsonMap(product.at(row),details));
  117. item->setText(0,"请刷新");
  118. }
  119. void PackDetailForm::code_single_clicked(int row)
  120. {
  121. qDebug()<<"打印码单";
  122. // QStringList list;
  123. // list.append("net_weight");
  124. QString condition = " where code_single="+product.at(row).value("code_single");
  125. djmb.mapPrintPackInfo(product.at(row),database.GetValuesList("details","net_weight",condition));
  126. }
  127. void PackDetailForm::case_number_clicked()
  128. {
  129. qDebug()<<"打印箱单";//暂时不知道打哪个
  130. }
  131. //上一页
  132. void PackDetailForm::on_prevoiusPage_clicked()
  133. {
  134. if(nowPageNum<=0){
  135. return;
  136. }
  137. nowPageNum--;
  138. changeTreeWidget(database.GetValues("product",productSqlList,"limit "+QString::number(nowPageNum*20)+",20"));
  139. }
  140. //下一页
  141. void PackDetailForm::on_nextPage_clicked()
  142. {
  143. if(nowPageNum>=pageNumAll-1){
  144. return;
  145. }
  146. nowPageNum++;
  147. changeTreeWidget(database.GetValues("product",productSqlList,"limit "+QString::number(nowPageNum*20)+",20"));
  148. }
  149. //跳转
  150. void PackDetailForm::on_jump_clicked()
  151. {
  152. //判断jumpPage是否为数字,如果不是return
  153. if(ui->jumpPage->text().toInt() == false){
  154. return;
  155. }
  156. //判断jumpPage页数是否大于总页数,如果是return
  157. if(ui->jumpPage->text().toInt()>pageNumAll){
  158. return;
  159. }
  160. nowPageNum = ui->jumpPage->text().toInt()-1;
  161. changeTreeWidget(database.GetValues("product",productSqlList,"limit "+QString::number(nowPageNum*20)+",20"));
  162. }
  163. //用作product数据库要查询的字段
  164. void PackDetailForm::productList()
  165. {
  166. productSqlList.append("tongbu");
  167. productSqlList.append("goods_id");
  168. productSqlList.append("code_single");
  169. productSqlList.append("quantity");
  170. productSqlList.append("batch_no");
  171. productSqlList.append("level_id");
  172. productSqlList.append("tube_number");
  173. productSqlList.append("gross_weight");
  174. productSqlList.append("net_weight");
  175. productSqlList.append("machine_no");
  176. productSqlList.append("packing_time");
  177. productSqlList.append("packing_type");
  178. productSqlList.append("carton_type");
  179. productSqlList.append("operator_id");
  180. productSqlList.append("category");
  181. productSqlList.append("specs");
  182. productSqlList.append("denier");
  183. productSqlList.append("dtex");
  184. productSqlList.append("fiber");
  185. productSqlList.append("remark");
  186. }
  187. //用作details数据库要查询的字段
  188. void PackDetailForm::detailsList()
  189. {
  190. detailSqlList.append("code_single");
  191. detailSqlList.append("case_number");
  192. detailSqlList.append("box_weight");
  193. detailSqlList.append("tube_number");
  194. detailSqlList.append("bucket_weight");
  195. detailSqlList.append("gross_weight");
  196. detailSqlList.append("net_weight");
  197. detailSqlList.append("sort");
  198. detailSqlList.append("remark");
  199. }
  200. ////往QTableWidget里添加数据
  201. //void PackDetailForm::changeTable(QList<QMap<QString,QString>> productList)
  202. //{
  203. //// qDebug()<<productList.at(0).value("goods_id");
  204. // if(productList.isEmpty()){
  205. // QMessageBox::information(this,tr("提示"),tr("数据为空"));
  206. // return;
  207. // }
  208. // product = productList;
  209. // ui->tableWidget->setColumnCount(11);
  210. // for(int i = 0;i<productList.size();i++){
  211. // ui->tableWidget->insertRow(i);
  212. // ui->tableWidget->setItem(i,0,new QTableWidgetItem(productList.at(i).value("tongbu") == "0" ? "未同步" : "同步"));
  213. // if(ui->tableWidget->item(i,0)->text()=="未同步"){
  214. // ui->tableWidget->item(i,0)->setBackground(QBrush(QColor(255, 0, 0,180)));
  215. // }else{
  216. // ui->tableWidget->item(i,0)->setBackground(QBrush(QColor(0, 255, 255)));
  217. // }
  218. // ui->tableWidget->setItem(i,1,new QTableWidgetItem(productList.at(i).value("code_single")));
  219. // ui->tableWidget->setItem(i,2,new QTableWidgetItem(productList.at(i).value("batch_no")));
  220. // ui->tableWidget->setItem(i,3,new QTableWidgetItem(productList.at(i).value("gross_weight")));
  221. // ui->tableWidget->setItem(i,4,new QTableWidgetItem(productList.at(i).value("net_weight")));
  222. // ui->tableWidget->setItem(i,5,new QTableWidgetItem(productList.at(i).value("quantity")));
  223. // ui->tableWidget->setItem(i,6,new QTableWidgetItem(productList.at(i).value("packing_time")));
  224. // auto tongbu_btn = new QPushButton("同步");
  225. // connect(tongbu_btn,&QPushButton::clicked,[i,this](){this->tongbu_clicked(i);});
  226. //// connect(tongbu_btn, SIGNAL(clicked(bool)), this, SLOT(tongbu_clicked()));
  227. // auto code_single_btn = new QPushButton("打印码单");
  228. // connect(code_single_btn,SIGNAL(clicked(bool)),this,SLOT(code_single_clicked()));
  229. // auto case_nember_btn = new QPushButton("打印箱单");
  230. // connect(case_nember_btn,SIGNAL(clicked(bool)),this,SLOT(case_number_clicked()));
  231. // auto details = new QTreeWidget(this);
  232. //// auto details_btn = new QPushButton("");
  233. // ui->tableWidget->setCellWidget(i,7,tongbu_btn);
  234. // ui->tableWidget->setCellWidget(i,8,code_single_btn);
  235. // ui->tableWidget->setCellWidget(i,9,case_nember_btn);
  236. // ui->tableWidget->setCellWidget(i,10,details);
  237. // details->setWindowTitle("tree");
  238. // QTreeWidgetItem* detail = new QTreeWidgetItem(QStringList()<<"详情");
  239. //// detail->setCheckState(0, Qt::Checked);
  240. //// details->setSortingEnabled(true);
  241. // details->header()->setSortIndicator(0,Qt::AscendingOrder);
  242. // details->addTopLevelItem(detail);
  243. // details->header()->setVisible(false);
  244. // for(int i=0; i<10; ++i)
  245. // {
  246. // QStringList columItemList;
  247. // QTreeWidgetItem *child;
  248. // columItemList<<"list";
  249. // child = new QTreeWidgetItem(columItemList);
  250. // detail->addChild(child);
  251. // details->setItemWidget(child,1,new QSpinBox);
  252. // }
  253. // }
  254. //}
  255. //同步
  256. //void PackDetailForm::tongbu_clicked(int row)
  257. //{
  258. // qDebug()<<"行数:" << row;
  259. // if(ui->tableWidget->item(row,0)->text()!="未同步"){
  260. // QMessageBox::information(this,tr("提示"),tr("请刷新"));
  261. // return;
  262. // }
  263. // QString condition = " where code_single="+product.at(row).value("code_single");
  264. // details = database.GetValues("details",detailSqlList,condition);
  265. // autoPack.doSend(autoPack.toJsonMap(product.at(row),details));
  266. // ui->tableWidget->setItem(row,0,new QTableWidgetItem("请刷新"));
  267. // ui->tableWidget->item(row,0)->setBackground(QBrush(QColor(255,255,0)));
  268. //}