packdetailform.cpp 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406
  1. #include "packdetailform.h"
  2. #include "ui_packdetailform.h"
  3. #include "struct_/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. ui->treeWidget->header()->setSectionResizeMode(QHeaderView::ResizeToContents);
  11. ui->treeWidget->header()->setStretchLastSection( true);
  12. nowPageNum = 0;
  13. limits = 5;
  14. connect(glo,&GlobalInfo::dengJiUped,this,&PackDetailForm::upconfig);
  15. ui->denierLine->hide();
  16. ui->dtexLine->hide();
  17. ui->fiberLine->hide();
  18. ui->startTimeEdit->setCalendarPopup(true);
  19. ui->startTimeEdit->setDisplayFormat("yyyy-MM-dd");
  20. ui->startTimeEdit->setDate(QDate::currentDate());
  21. ui->endTimeEdit->setCalendarPopup(true);
  22. ui->endTimeEdit->setDisplayFormat("yyyy-MM-dd");
  23. ui->endTimeEdit->setDate(QDate::currentDate());
  24. ui->startTimeEdit->setMaximumDate(QDate::currentDate());
  25. ui->startTimeEdit->setMinimumDate(QDate::currentDate().addYears(-1));
  26. }
  27. PackDetailForm::~PackDetailForm()
  28. {
  29. delete ui;
  30. }
  31. void PackDetailForm::on_pushBack_clicked()
  32. {
  33. emit back();
  34. }
  35. void PackDetailForm::on_pushButton_clicked()
  36. {
  37. nowPageNum = 0;
  38. int start = ui->startTimeEdit->date().toString("yyyyMMdd").toInt();
  39. int end = ui->endTimeEdit->date().toString("yyyyMMdd").toInt();
  40. if(start>end){
  41. QMessageBox::information(this,tr("注意"),tr("请输入正确的起始时间和结束时间"));
  42. return;
  43. }
  44. QDate tm = ui->startTimeEdit->date();
  45. for(int i = 0;i<10;i++){
  46. if(tm.addDays(i).toString("yyyyMMdd").toInt() >= end){
  47. days = i;
  48. break;
  49. }
  50. }
  51. QList<PackSaveInfo> save;
  52. QList<PackSaveInfo> saveList;
  53. for(int i = 0;i<=days;i++){
  54. QDate tm = ui->endTimeEdit->date().addDays(-i);
  55. QList<PackSaveInfo> saveinfo;
  56. //issync未同步按钮是否点击
  57. if(!ui->issync->isChecked()){
  58. saveinfo = GlobalInfo::this_()->packInfoManger()->getPackInfo(tm);
  59. }else{
  60. saveinfo = GlobalInfo::this_()->packInfoManger()->getPackInfoSync(tm);
  61. }
  62. for(int i = saveinfo.size()-1;i>=0;i--){
  63. save.append(saveinfo.at(i));
  64. }
  65. // saveList.append(save);
  66. }
  67. // qDebug()<<save.size();
  68. setSaveInfo(save);
  69. if(!ui->codeSingleLine->text().isEmpty()||!ui->batch_noLine->text().isEmpty()){
  70. select();
  71. }
  72. dengjiselect();
  73. changeTreeWidget(0,limits);
  74. }
  75. //筛选
  76. void PackDetailForm::select()
  77. {
  78. QList<PackSaveInfo> saveList;
  79. int num =saveInfo.size();
  80. for(int i = 0;i<num;i++){
  81. if(!ui->codeSingleLine->text().isEmpty()){
  82. if(saveInfo.at(i).packInfo->codeSingle()==ui->codeSingleLine->text()){
  83. saveList.append(saveInfo.at(i));
  84. break;
  85. }
  86. }
  87. if(!ui->batch_noLine->text().isEmpty()){
  88. if(saveInfo.at(i).packInfo->batch_no==ui->batch_noLine->text()){
  89. saveList.append(saveInfo.at(i));
  90. continue;
  91. }
  92. }
  93. }
  94. setSaveInfo(saveList);
  95. }
  96. void PackDetailForm::dengjiselect()
  97. {
  98. if(ui->levelBox->currentText()!="等级"){
  99. QList<PackSaveInfo> save;
  100. for(int i = 0;i<saveInfo.size();i++){
  101. if(saveInfo.at(i).packInfo->level == ui->levelBox->currentText()){
  102. save.append(saveInfo.at(i));
  103. }
  104. }
  105. setSaveInfo(save);
  106. return;
  107. }
  108. }
  109. //往treewidget添加数据
  110. void PackDetailForm::changeTreeWidget(/*QList<QMap<QString,QString>> productList*/int page,int limit)
  111. {
  112. if(saveInfo.isEmpty()){
  113. QMessageBox::information(this,tr("提示"),tr("数据为空"));
  114. ui->treeWidget->clear();
  115. return;
  116. }
  117. ui->treeWidget->clear();
  118. // product = productList;
  119. /******************************************************************/
  120. //循环添加数据
  121. for(int i = 0;i<limit;i++){
  122. if(page*limit+i>=saveInfo.size()){
  123. break;
  124. }
  125. auto & v = saveInfo.at(page*limit+i);
  126. QStringList list;
  127. list.append(v.isSync() ? "已同步" : "未同步");
  128. // if(productList.at(i).value("tongbu") == "0"){
  129. // }
  130. list.append(v.packInfo->codeSingle());
  131. // list.append(saveInfo.at(i).packInfo.batch_no);
  132. list.append(getDecimalbit(v.packInfo->gross_weight()/1000.00));
  133. list.append(getDecimalbit(v.packInfo->net_weight()/1000.00));
  134. list.append(QString::number(v.packInfo->quantity));
  135. auto item = new QTreeWidgetItem(list);
  136. auto tongbu_btn = new QPushButton("同步");
  137. connect(tongbu_btn,&QPushButton::clicked,[item,i,this](){this->tongbu_clicked(item,i);});
  138. // connect(tongbu_btn, SIGNAL(clicked(bool)), this, SLOT(tongbu_clicked()));
  139. auto code_single_btn = new QPushButton("打印码单");
  140. connect(code_single_btn,&QPushButton::clicked,[i,this](){this->code_single_clicked(i);});
  141. // auto case_nember_btn = new QPushButton("打印箱单");
  142. // connect(case_nember_btn,SIGNAL(clicked(bool)),this,SLOT(case_number_clicked()));
  143. ui->treeWidget->addTopLevelItem(item);
  144. ui->treeWidget->setItemWidget(item,6,tongbu_btn);
  145. ui->treeWidget->setItemWidget(item,7,code_single_btn);
  146. // ui->treeWidget->setItemWidget(item,9,case_nember_btn);
  147. // details = database.GetValues("details",detailSqlList," where code_single = "+product.at(i).value("code_single"));
  148. /*************************子项目****************************/
  149. //treewidget子项目标题
  150. QStringList columItemList;
  151. QTreeWidgetItem *child;
  152. columItemList<<"箱号"<<"毛重(千克/kg)"<<"净重(千克/kg)";
  153. child = new QTreeWidgetItem(columItemList);
  154. item->addChild(child);
  155. ui->treeWidget->setCurrentItem(child);
  156. //treewidget子项目数据循环添加
  157. QList<QSharedPointer<BoxInfo>> boxes = v.packInfo->boxes();
  158. for(int j=0; j<boxes.size(); ++j)
  159. {
  160. QStringList columItemList;
  161. QTreeWidgetItem *child;
  162. columItemList<<boxes.at(j)->caseNumber()<<QString::number(boxes.at(j)->gross_weight/1000.00)<<QString::number(boxes.at(j)->net_weight/1000.00);
  163. // qDebug()<<"test"<<boxes.at(j)->caseNumber()<<QString::number(boxes.at(j)->gross_weight/1000.00)<<QString::number(boxes.at(j)->net_weight/1000.00);
  164. child = new QTreeWidgetItem(columItemList);
  165. item->addChild(child);
  166. // ui->treeWidget->setCurrentItem(child);
  167. }
  168. }
  169. /**************************************************************/
  170. pageNumAll = saveInfo.size() / limit;
  171. if(saveInfo.size()%limit>0){
  172. pageNumAll+=1;
  173. }
  174. // ui->pageDataNum->setText("本页数据:"+QString::number(product.length()));
  175. ui->pagesNum->setText(QString("%1/%2").arg(nowPageNum+1).arg(pageNumAll));
  176. }
  177. //同步按钮
  178. void PackDetailForm::tongbu_clicked(QTreeWidgetItem * item,int row)
  179. {
  180. if(item->text(0) != "未同步"){
  181. QMessageBox::information(this,tr("提示"),tr("请刷新"));
  182. return;
  183. }
  184. Manger = GlobalInfo::this_()->packInfoManger();
  185. packServer = new PackInfoSeed2Server(Manger,this,true);
  186. QSharedPointer<PackInfo> pack = saveInfo.at(limits*nowPageNum+row).packInfo;
  187. connect(packServer,&PackInfoSeed2Server::syncEnd,this,&PackDetailForm::SynReturn);
  188. packServer->send(pack);
  189. item->setText(0,"同步中");
  190. }
  191. void PackDetailForm::code_single_clicked(int row)
  192. {
  193. QSharedPointer<PackInfo> pack = saveInfo.at(row).packInfo;
  194. GlobalInfo::this_()->printerPack(pack);
  195. }
  196. void PackDetailForm::case_number_clicked()
  197. {
  198. qDebug()<<"打印箱单";//暂时不知道打哪个
  199. }
  200. //上一页
  201. void PackDetailForm::on_prevoiusPage_clicked()
  202. {
  203. if(nowPageNum<=0){
  204. return;
  205. }
  206. nowPageNum--;
  207. changeTreeWidget(nowPageNum,limits);
  208. }
  209. //下一页
  210. void PackDetailForm::on_nextPage_clicked()
  211. {
  212. if(nowPageNum>=pageNumAll-1){
  213. return;
  214. }
  215. nowPageNum++;
  216. changeTreeWidget(nowPageNum,limits);
  217. }
  218. //跳转
  219. void PackDetailForm::on_jump_clicked()
  220. {
  221. //判断jumpPage是否为数字,如果不是return
  222. if(ui->jumpPage->text().toInt() == false){
  223. return;
  224. }
  225. //判断jumpPage页数是否大于总页数,如果是return
  226. if(ui->jumpPage->text().toInt()>pageNumAll){
  227. return;
  228. }
  229. nowPageNum = ui->jumpPage->text().toInt()-1;
  230. changeTreeWidget(nowPageNum,limits);
  231. }
  232. void PackDetailForm::SynReturn()
  233. {
  234. int pageNum = nowPageNum;
  235. // QDate tm = QDate::currentDate().addDays(-ui->startTime->currentData().toInt());
  236. // QList<PackSaveInfo> saveinfo = GlobalInfo::this_()->packInfoManger()->getPackInfo(tm);
  237. // setSaveInfo(saveinfo);
  238. // changeTreeWidget(pageNum,limits);
  239. QList<PackSaveInfo> save;
  240. QList<PackSaveInfo> saveList;
  241. for(int i = 0;i<=days;i++){
  242. QDate tm = QDate::currentDate().addDays(-i);
  243. QList<PackSaveInfo> saveinfo;
  244. if(!ui->issync->isChecked()){
  245. saveinfo = GlobalInfo::this_()->packInfoManger()->getPackInfo(tm);
  246. }else{
  247. saveinfo = GlobalInfo::this_()->packInfoManger()->getPackInfoSync(tm);
  248. }
  249. for(int i = saveinfo.size()-1;i>=0;i--){
  250. save.append(saveinfo.at(i));
  251. }
  252. // saveList.append(save);
  253. }
  254. // qDebug()<<save.size();
  255. setSaveInfo(save);
  256. if(!ui->codeSingleLine->text().isEmpty()||!ui->batch_noLine->text().isEmpty()||ui->levelBox->currentText()!="等级"){
  257. select();
  258. }
  259. changeTreeWidget(pageNum,limits);
  260. }
  261. void PackDetailForm::upconfig()
  262. {
  263. DaBaoConfig config = glo->dbConfig();
  264. QList<DengJiConfigItem> dengJis = glo->dengJiList();
  265. for(int i = 0;i<dengJis.size();i++){
  266. if(!dengJis.at(i).isEnable){
  267. ui->levelBox->addItem(dengJis.at(i).value,dengJis.at(i).id);
  268. }
  269. }
  270. }
  271. void PackDetailForm::on_showMao_clicked()
  272. {
  273. int start = ui->startTimeEdit->date().toString("yyyyMMdd").toInt();
  274. int end = ui->endTimeEdit->date().toString("yyyyMMdd").toInt();
  275. if(start>end){
  276. QMessageBox::information(this,tr("注意"),tr("请输入正确的起始时间和结束时间"));
  277. return;
  278. }
  279. QDate tm = ui->startTimeEdit->date();
  280. int days = 0;
  281. for(int i = 0;i<10;i++){
  282. if(tm.addDays(i).toString("yyyyMMdd").toInt() >= end){
  283. days = i;
  284. break;
  285. }
  286. }
  287. }
  288. ////往QTableWidget里添加数据
  289. //void PackDetailForm::changeTable(QList<QMap<QString,QString>> productList)
  290. //{
  291. //// qDebug()<<productList.at(0).value("goods_id");
  292. // if(productList.isEmpty()){
  293. // QMessageBox::information(this,tr("提示"),tr("数据为空"));
  294. // return;
  295. // }
  296. // product = productList;
  297. // ui->tableWidget->setColumnCount(11);
  298. // for(int i = 0;i<productList.size();i++){
  299. // ui->tableWidget->insertRow(i);
  300. // ui->tableWidget->setItem(i,0,new QTableWidgetItem(productList.at(i).value("tongbu") == "0" ? "未同步" : "同步"));
  301. // if(ui->tableWidget->item(i,0)->text()=="未同步"){
  302. // ui->tableWidget->item(i,0)->setBackground(QBrush(QColor(255, 0, 0,180)));
  303. // }else{
  304. // ui->tableWidget->item(i,0)->setBackground(QBrush(QColor(0, 255, 255)));
  305. // }
  306. // ui->tableWidget->setItem(i,1,new QTableWidgetItem(productList.at(i).value("code_single")));
  307. // ui->tableWidget->setItem(i,2,new QTableWidgetItem(productList.at(i).value("batch_no")));
  308. // ui->tableWidget->setItem(i,3,new QTableWidgetItem(productList.at(i).value("gross_weight")));
  309. // ui->tableWidget->setItem(i,4,new QTableWidgetItem(productList.at(i).value("net_weight")));
  310. // ui->tableWidget->setItem(i,5,new QTableWidgetItem(productList.at(i).value("quantity")));
  311. // ui->tableWidget->setItem(i,6,new QTableWidgetItem(productList.at(i).value("packing_time")));
  312. // auto tongbu_btn = new QPushButton("同步");
  313. // connect(tongbu_btn,&QPushButton::clicked,[i,this](){this->tongbu_clicked(i);});
  314. //// connect(tongbu_btn, SIGNAL(clicked(bool)), this, SLOT(tongbu_clicked()));
  315. // auto code_single_btn = new QPushButton("打印码单");
  316. // connect(code_single_btn,SIGNAL(clicked(bool)),this,SLOT(code_single_clicked()));
  317. // auto case_nember_btn = new QPushButton("打印箱单");
  318. // connect(case_nember_btn,SIGNAL(clicked(bool)),this,SLOT(case_number_clicked()));
  319. // auto details = new QTreeWidget(this);
  320. //// auto details_btn = new QPushButton("");
  321. // ui->tableWidget->setCellWidget(i,7,tongbu_btn);
  322. // ui->tableWidget->setCellWidget(i,8,code_single_btn);
  323. // ui->tableWidget->setCellWidget(i,9,case_nember_btn);
  324. // ui->tableWidget->setCellWidget(i,10,details);
  325. // details->setWindowTitle("tree");
  326. // QTreeWidgetItem* detail = new QTreeWidgetItem(QStringList()<<"详情");
  327. //// detail->setCheckState(0, Qt::Checked);
  328. //// details->setSortingEnabled(true);
  329. // details->header()->setSortIndicator(0,Qt::AscendingOrder);
  330. // details->addTopLevelItem(detail);
  331. // details->header()->setVisible(false);
  332. // for(int i=0; i<10; ++i)
  333. // {
  334. // QStringList columItemList;
  335. // QTreeWidgetItem *child;
  336. // columItemList<<"list";
  337. // child = new QTreeWidgetItem(columItemList);
  338. // detail->addChild(child);
  339. // details->setItemWidget(child,1,new QSpinBox);
  340. // }
  341. // }
  342. //}
  343. //同步
  344. //void PackDetailForm::tongbu_clicked(int row)
  345. //{
  346. // qDebug()<<"行数:" << row;
  347. // if(ui->tableWidget->item(row,0)->text()!="未同步"){
  348. // QMessageBox::information(this,tr("提示"),tr("请刷新"));
  349. // return;
  350. // }
  351. // QString condition = " where code_single="+product.at(row).value("code_single");
  352. // details = database.GetValues("details",detailSqlList,condition);
  353. // autoPack.doSend(autoPack.toJsonMap(product.at(row),details));
  354. // ui->tableWidget->setItem(row,0,new QTableWidgetItem("请刷新"));
  355. // ui->tableWidget->item(row,0)->setBackground(QBrush(QColor(255,255,0)));
  356. //}