fixedweightpackform.cpp 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766
  1. #include "fixedweightpackform.h"
  2. #include "editboxinfodialog.h"
  3. #include "ui_fixedweightpackform.h"
  4. #include <pqQtlib/utils/pqfileutils.h>
  5. using namespace PQ;
  6. FixedWeightPackForm::FixedWeightPackForm(QWidget *parent)
  7. : QWidget(parent)
  8. , ui(new Ui::FixedWeightPackForm)
  9. , packServer(nullptr)
  10. , Manger(nullptr)
  11. {
  12. ui->setupUi(this);
  13. // QTimer *timer = new QTimer(this);
  14. // connect(timer,&QTimer::timeout,this,&FixedWeightPackForm::calcData);
  15. // timer->start(500);
  16. connect(glo, &GlobalInfo::dbConfigUpdated, this, &FixedWeightPackForm::upconfig);
  17. connect(glo, &GlobalInfo::dengJiUped, this, &FixedWeightPackForm::upDengjiInfo);
  18. connect(glo, &GlobalInfo::doInited, this, &FixedWeightPackForm::changeSpecs);
  19. connect(glo, &GlobalInfo::selectproject, this, &FixedWeightPackForm::changeSpecs);
  20. connect(glo, &GlobalInfo::wareUped, this, &FixedWeightPackForm::upWare);
  21. connect(glo, &GlobalInfo::boxModelUped, this, &FixedWeightPackForm::upBoxModelList);
  22. connect(glo, &GlobalInfo::packModelUpde, this, &FixedWeightPackForm::upPackModelList);
  23. auto dt = CacheFile::readFile("dingzhongInfo.cache");
  24. auto list = QString::fromUtf8(dt).split("[,]");
  25. if (list.size() == 2) {
  26. ui->taitou->setText(list.at(0));
  27. ui->taiPhone->setText(list.at(1));
  28. }
  29. if (list.size() == 3) {
  30. ui->taitou->setText(list.at(0));
  31. ui->taiPhone->setText(list.at(1));
  32. ui->lineEdit_address->setText(list.at(2));
  33. }
  34. // ui->tableWidget_2->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  35. ui->dingzhong->setChecked(true);
  36. //初始化快捷键
  37. setShortcutConfig();
  38. }
  39. FixedWeightPackForm::~FixedWeightPackForm()
  40. {
  41. delete ui;
  42. }
  43. //从秤中获取毛重、皮重、净重、筒数------每100毫秒一次
  44. void FixedWeightPackForm::calcData()
  45. {
  46. double pz = ui->pizhong->currentText().toDouble();
  47. double tz = ui->tongzhong->currentText().toDouble();
  48. double ts = ui->tongshu->text().toDouble();
  49. if (ui->showMaoZhong->isChecked()) {
  50. gross_weight = floor((ui->grossWeight_2->text().toDouble() + chengZhongJingDuModel_Num)
  51. * 100)
  52. / 100;
  53. netNum = floor(((ui->grossWeight_2->text().toDouble() - pz - tz * ts)
  54. + chengZhongJingDuModel_Num)
  55. * 100)
  56. / 100;
  57. f_gross_weight = float(floor((gross_weight + f_chengZhongJingDuModel_Num) * 10)) / 10;
  58. f_netNum = float(floor((netNum + f_chengZhongJingDuModel_Num) * 10)) / 10;
  59. } else {
  60. netNum = floor((ui->grossWeight_2->text().toDouble() + chengZhongJingDuModel_Num) * 100)
  61. / 100;
  62. gross_weight = floor(((ui->grossWeight_2->text().toDouble() + pz + tz * ts)
  63. + chengZhongJingDuModel_Num)
  64. * 100)
  65. / 100;
  66. f_gross_weight = float(floor((gross_weight + f_chengZhongJingDuModel_Num) * 10)) / 10;
  67. f_netNum = float(floor((netNum + f_chengZhongJingDuModel_Num) * 10)) / 10;
  68. }
  69. if (netNum < 0) {
  70. netNum = 0.00;
  71. f_netNum = 0.0;
  72. }
  73. }
  74. void FixedWeightPackForm::save()
  75. {
  76. QStringList list;
  77. list << ui->taitou->text() << ui->taiPhone->text() << ui->lineEdit_address->text();
  78. PQ::CacheFile::writeFile("dingzhongInfo.cache", list.join("[,]").toUtf8());
  79. if (!packinfo.isNull()) {
  80. Manger->savePackInfo(packinfo);
  81. }
  82. }
  83. void FixedWeightPackForm::on_addPackList_clicked()
  84. {
  85. if (packinfo.isNull())
  86. return;
  87. if (!packinfo.isNull() && packinfo->boxes().size() > 0) {
  88. packinfo->quantity = packinfo->boxes().size();
  89. packinfo->level_id = ui->dengji->currentData().toInt();
  90. packinfo->machine_no = ui->jitai->currentText();
  91. packinfo->carton_type = ui->zhixiang->currentText();
  92. packinfo->customer = ui->taitou->text();
  93. packinfo->telephone = ui->taiPhone->text();
  94. packinfo->address = ui->lineEdit_address->text();
  95. }
  96. packinfo->warehouse_id = 0;
  97. if (ui->ruku->isChecked()) {
  98. packinfo->warehouse_id = ui->wareBox->currentData().toInt();
  99. }
  100. if (ui->AutoSync->isChecked() && !GlobalInfo::this_()->isNoLine())
  101. packServer->send(packinfo);
  102. Manger->savePackInfo(packinfo);
  103. // GlobalInfo::this_()->packInfoManger()->setPackInfoSync(packinfo->codeSingle(),packinfo->time(),true);
  104. if (ui->madanPrint->isChecked()) {
  105. if (ui->madan->currentIndex() == 0) {
  106. GlobalInfo::this_()->printerPack(packinfo);
  107. } else {
  108. GlobalInfo::this_()->printerPackModel(packinfo, ui->madan->currentIndex() - 1);
  109. }
  110. }
  111. ui->tableWidget->clearContents();
  112. ui->tableWidget->setRowCount(0);
  113. // ui->widget_2->setEnabled(true);
  114. packinfo.clear();
  115. }
  116. void FixedWeightPackForm::on_addBoxList_clicked()
  117. {
  118. if (ui->grossWeight_2->text().toDouble() <= 0) {
  119. QMessageBox::information(this, tr("注意"), tr("重量异常"));
  120. return;
  121. }
  122. if (ui->tongshu->text().toInt() <= 0) {
  123. QMessageBox::information(this, tr("注意"), tr("筒数异常"));
  124. return;
  125. }
  126. calcData();
  127. if (chengZhongJingDu == 2) {
  128. if (netNum <= 0) {
  129. QMessageBox::information(this, tr("注意"), tr("重量异常"));
  130. return;
  131. }
  132. } else if (chengZhongJingDu == 1) {
  133. if (f_netNum <= 0) {
  134. // netNum = 0.00;
  135. QMessageBox::information(this, tr("注意"), tr("重量异常"));
  136. return;
  137. }
  138. }
  139. checkPackInfo(); //检查packinfo isNull
  140. //当当前箱数大于等于最大箱数是启动on_addPackList_clicked();
  141. if (packinfo->boxes().size() >= ui->comboBox->currentText().toInt()) {
  142. on_addPackList_clicked();
  143. // return;
  144. }
  145. checkPackInfo(); //检查packinfo isNull
  146. auto index = packinfo->boxInfoSize();
  147. auto box = packinfo->addBoxInfo();
  148. // calcData();
  149. box->box_weight = int(ui->pizhong->currentText().toDouble() * 1000);
  150. box->tube_number = ui->tongshu->text().toInt();
  151. // box->bucket_weight = int((ui->tongzhong->currentText().toDouble()*ui->tongshu->text().toDouble())*1000);
  152. box->bucket_weight = int(
  153. floor((ui->tongzhong->currentText().toDouble() * ui->tongshu->text().toDouble() + 0.005)
  154. * 100)
  155. * 10);
  156. if (chengZhongJingDu == 2) {
  157. box->gross_weight = QString::number(gross_weight * 1000).toInt();
  158. box->net_weight = QString::number(netNum * 1000).toInt();
  159. } else if (chengZhongJingDu == 1) {
  160. box->gross_weight = QString::number(f_gross_weight * 1000).toInt();
  161. box->net_weight = QString::number(f_netNum * 1000).toInt();
  162. }
  163. box->Level = ui->dengji->currentText();
  164. box->twist_type = ui->nianxiang->currentText();
  165. box->bucket_color = ui->guanse->currentText();
  166. box->sort = "1";
  167. // box->remark = ui->beizhu->toPlainText();
  168. packinfo->level = ui->dengji->currentText();
  169. packinfo->level_id = ui->dengji->currentData().toInt();
  170. packinfo->autoRuku = ui->ruku->isChecked();
  171. addTableWidget(box, index);
  172. // 把box数据添加到packinfo的boxes数据表里;
  173. packinfo->addBoxInfoList(box);
  174. if (ui->xiangdanPrint->isChecked()) {
  175. if (ui->xiangdan->currentText() == "默认箱单") {
  176. GlobalInfo::this_()->printerBox(box);
  177. } else if (ui->xiangdan->currentText() == "默认箱单2") {
  178. GlobalInfo::this_()->printerBox1(box);
  179. } else {
  180. GlobalInfo::this_()->printerBoxModel(box, ui->xiangdan->currentIndex() - 1);
  181. }
  182. }
  183. // if(ui->xiangdanPrint->isChecked()){
  184. // if(ui->xiangdan->currentIndex()==0){
  185. // GlobalInfo::this_()->printerBox(box);
  186. // }
  187. // }
  188. // qDebug()<<ui->xiangdan->currentIndex();
  189. upSum();
  190. //添加数据库
  191. // aputils.insertDetailsSQL(box,packinfo->codeSingle());
  192. }
  193. void FixedWeightPackForm::upSum()
  194. {
  195. if (packinfo.isNull()) {
  196. ui->labelTongZHong->setText("0");
  197. ui->labelWight->setText("0");
  198. ui->labelJing->setText("0");
  199. } else {
  200. ui->labelTongZHong->setText(QString::number(packinfo->tube_number()));
  201. ui->labelWight->setText(getDecimalbit(packinfo->gross_weight() / 1000.00));
  202. ui->labelJing->setText(getDecimalbit(packinfo->net_weight() / 1000.00));
  203. }
  204. }
  205. //检查packinfo isNull
  206. void FixedWeightPackForm::checkPackInfo()
  207. {
  208. if (packinfo.isNull()) {
  209. packinfo.reset(new PackInfo(_info));
  210. packinfo->operator_id = QString::number(GlobalInfo::this_()->user().userId);
  211. packinfo->packing_time = QDate::currentDate().toString("yyyy-MM-dd");
  212. packinfo->packing_type = _info->category;
  213. packinfo->packType = 0;
  214. //
  215. packinfo->batch_no = _info->batch_no;
  216. packinfo->quantity = packinfo->boxes().size();
  217. packinfo->level_id = ui->dengji->currentData().toInt();
  218. packinfo->machine_no = ui->jitai->currentText();
  219. packinfo->carton_type = ui->zhixiang->currentText();
  220. packinfo->customer = ui->taitou->text();
  221. packinfo->telephone = ui->taiPhone->text();
  222. packinfo->address = ui->lineEdit_address->text();
  223. // ui->widget_2->setEnabled(false);
  224. restTableWidget();
  225. }
  226. if (packinfo->goodsID() < 0) {
  227. packinfo.clear();
  228. }
  229. }
  230. //往tablewidget里添加数据
  231. void FixedWeightPackForm::addTableWidget(QSharedPointer<BoxInfo> box, int row)
  232. {
  233. ui->nowCode->setText(packinfo->codeSingle());
  234. ui->tableWidget->insertRow(row);
  235. ui->tableWidget->setItem(row, 0, new QTableWidgetItem(box->caseNumber()));
  236. ui->tableWidget->setItem(row, 1, new QTableWidgetItem(QString::number(box->tube_number)));
  237. ui->tableWidget->setItem(row,
  238. 2,
  239. new QTableWidgetItem(QString::number(box->gross_weight / 1000.00)));
  240. ui->tableWidget->setItem(row, 3, new QTableWidgetItem(ui->tongzhong->currentText()));
  241. ui->tableWidget->setItem(row, 4, new QTableWidgetItem(box->bucket_color));
  242. ui->tableWidget->setItem(row,
  243. 5,
  244. new QTableWidgetItem(QString::number(box->net_weight / 1000.00)));
  245. ui->tableWidget->item(row, 0)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  246. ui->tableWidget->item(row, 1)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  247. ui->tableWidget->item(row, 2)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  248. ui->tableWidget->item(row, 3)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  249. ui->tableWidget->item(row, 4)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  250. ui->tableWidget->item(row, 5)->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
  251. QWidget *tmp_widget = new QWidget();
  252. tmp_widget->setMaximumWidth(200);
  253. QHBoxLayout *tmp_layout = new QHBoxLayout(tmp_widget);
  254. auto btn_1 = new QPushButton("删除", tmp_widget);
  255. btn_1->setMaximumWidth(40);
  256. auto btn_2 = new QPushButton("修改", tmp_widget);
  257. btn_2->setMaximumWidth(40);
  258. auto btn_3 = new QPushButton("补打", tmp_widget);
  259. btn_3->setMaximumWidth(40);
  260. tmp_layout->addWidget(btn_1);
  261. tmp_layout->addWidget(btn_2);
  262. tmp_layout->addWidget(btn_3);
  263. tmp_layout->setSpacing(0);
  264. tmp_layout->setMargin(0);
  265. int i = row;
  266. connect(btn_1, &QPushButton::clicked, [i, this]() { this->del_clicked(i); });
  267. connect(btn_2, &QPushButton::clicked, [i, this]() { this->edit_clicked(i); });
  268. connect(btn_3, &QPushButton::clicked, [i, this]() { this->Makeup_clicked(i); });
  269. ui->tableWidget->setCellWidget(row, 6, tmp_widget);
  270. // ui->tableWidget->resizeColumnsToContents();
  271. ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); // x先自适应宽度
  272. ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
  273. ui->tableWidget->horizontalHeader()->setSectionResizeMode(6, QHeaderView::ResizeToContents);
  274. }
  275. void FixedWeightPackForm::init()
  276. {
  277. if (packServer == nullptr) {
  278. Manger = GlobalInfo::this_()->packInfoManger();
  279. packServer = new PackInfoSeed2Server(Manger, this, true);
  280. }
  281. ui->jitai->setCurrentText(_info->machine_no);
  282. ui->pizhong->setCurrentText(QString(_info->box_weight));
  283. ui->guanse->setCurrentText(_info->bucket_color);
  284. ui->zhixiang->setCurrentText(_info->carton_type);
  285. ui->tongzhong->setCurrentText(_info->bucket_weight);
  286. ui->nianxiang->setCurrentText(_info->twist_type);
  287. if (!_info->customer.isEmpty()) {
  288. ui->taitou->setText(_info->customer);
  289. }
  290. if (!_info->tel.isEmpty()) {
  291. ui->taiPhone->setText(_info->tel);
  292. }
  293. if (!_info->address.isEmpty()) {
  294. ui->lineEdit_address->setText(_info->address);
  295. }
  296. restTableWidget();
  297. }
  298. void FixedWeightPackForm::upconfig()
  299. {
  300. DaBaoConfig config = glo->dbConfig();
  301. //称重精度
  302. chengZhongJingDu = config.chengZhongJIngDu;
  303. //称重精度方式//4:四舍五入 5:二舍三入 6:一舍二入
  304. chengZhongJingDuModel = config.chengZhongJingDuMode;
  305. switch (chengZhongJingDuModel) {
  306. case 4:
  307. chengZhongJingDuModel_Num = 0.005;
  308. f_chengZhongJingDuModel_Num = 0.05;
  309. break;
  310. case 5:
  311. chengZhongJingDuModel_Num = 0.007;
  312. f_chengZhongJingDuModel_Num = 0.07;
  313. break;
  314. case 6:
  315. chengZhongJingDuModel_Num = 0.008;
  316. f_chengZhongJingDuModel_Num = 0.08;
  317. break;
  318. }
  319. // 打包及入库
  320. ui->ruku->setChecked(config.daBaoRuku);
  321. // 码数
  322. ui->comboBox->clear();
  323. for (int i = 0; i < config.mashu.size(); ++i) {
  324. ui->comboBox->addItem(QString::number(config.mashu.at(i)));
  325. }
  326. //机台
  327. ui->jitai->clear();
  328. ui->jitai->addItems(config.jitai);
  329. //打包工班次
  330. ui->comboBox_2->clear();
  331. ui->comboBox_2->addItems(config.daBaoGongBanCi);
  332. //皮重
  333. ui->pizhong->clear();
  334. for (int i = 0; i < config.xiangzhong.size(); i++) {
  335. ui->pizhong->addItem(QString::number(config.xiangzhong.at(i)));
  336. }
  337. //管色
  338. ui->guanse->clear();
  339. ui->guanse->addItems(config.guanse);
  340. //捻向
  341. ui->nianxiang->clear();
  342. ui->nianxiang->addItems(config.nianxiang);
  343. //纸箱
  344. ui->zhixiang->clear();
  345. ui->zhixiang->addItems(config.zhixiang);
  346. //筒重
  347. ui->tongzhong->clear();
  348. for (int i = 0; i < config.tongZhong.size(); i++) {
  349. ui->tongzhong->addItem(QString::number(config.tongZhong.at(i)));
  350. }
  351. }
  352. void FixedWeightPackForm::upDengjiInfo()
  353. {
  354. QList<DengJiConfigItem> dengJis = glo->dengJiList();
  355. ui->dengji->clear();
  356. for (int i = 0; i < dengJis.size(); i++) {
  357. if (!dengJis.at(i).isEnable) {
  358. ui->dengji->addItem(dengJis.at(i).value, dengJis.at(i).id);
  359. }
  360. }
  361. }
  362. void FixedWeightPackForm::upWare()
  363. {
  364. QList<WarehouseConfig> ware = glo->wareList();
  365. for (int i = 0; i < ware.size(); i++) {
  366. ui->wareBox->addItem(ware.at(i).name, ware.at(i).warehouse_id);
  367. }
  368. }
  369. void FixedWeightPackForm::upBoxModelList()
  370. {
  371. ui->xiangdan->clear();
  372. ui->xiangdan->addItem("默认箱单");
  373. ui->xiangdan->addItem("默认箱单2");
  374. QList<QSharedPointer<BoxModel>> boxList = glo->BoxModelList();
  375. for (int i = 0; i < boxList.size(); i++) {
  376. ui->xiangdan->addItem(boxList.at(i)->Model_Name);
  377. }
  378. // ui->xiangdan->setCurrentText("默认箱单2");
  379. }
  380. void FixedWeightPackForm::upPackModelList()
  381. {
  382. ui->madan->clear();
  383. ui->madan->addItem("默认码单");
  384. QList<QSharedPointer<PackModel>> packList = glo->PackModelList();
  385. for (int i = 0; i < packList.size(); i++) {
  386. ui->madan->addItem(packList.at(i)->Model_Name);
  387. }
  388. }
  389. void FixedWeightPackForm::on_pushPiLiang_clicked()
  390. {
  391. // int tsize = 0;
  392. // if(!packinfo.isNull()) tsize = packinfo->boxes().size();
  393. auto size = ui->spinBox->value();
  394. for (int i = 0; i < size; ++i) {
  395. on_addBoxList_clicked();
  396. }
  397. }
  398. //获取品目信息
  399. void FixedWeightPackForm::on_searchButton_clicked()
  400. {
  401. auto str = ui->lineEdit->text();
  402. if (str.isEmpty()) {
  403. updateTableWidget(prolist);
  404. } else {
  405. auto list = GlobalInfo::this_()->searchProject(str);
  406. updateTableWidget(list);
  407. }
  408. }
  409. void FixedWeightPackForm::changeSpecs()
  410. {
  411. prolist = GlobalInfo::this_()->project().values();
  412. updateTableWidget(prolist);
  413. }
  414. void FixedWeightPackForm::updateTableWidget(QList<QSharedPointer<ProjectInfo>> &list)
  415. {
  416. ui->tableWidget_2->clearContents();
  417. ui->tableWidget_2->setRowCount(0);
  418. ui->tableWidget_2->setColumnWidth(0, 40);
  419. ui->tableWidget_2->setColumnWidth(1, 80);
  420. ui->tableWidget_2->setColumnWidth(2, 80);
  421. // ui->tableWidget_2->setColumnWidth(3,70);
  422. ui->tableWidget_2->setColumnWidth(4, 40);
  423. ui->tableWidget_2->horizontalHeader()->setStretchLastSection(true);
  424. // ui->tableWidget_2->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  425. int currt = -1;
  426. for (int i = 0; i < list.size(); ++i) {
  427. auto &v = list.at(i);
  428. if (v->goods_id < 0) {
  429. continue;
  430. }
  431. // ui->tableWidget_2->insertRow();
  432. ui->tableWidget_2->setRowCount(ui->tableWidget_2->rowCount() + 1);
  433. auto xuanze_btn = new QRadioButton();
  434. QString batchno = prolist.at(i)->batch_no;
  435. // qDebug()<<ui->tableWidget_2->rowCount()<<batchno;
  436. connect(xuanze_btn, &QPushButton::clicked, [batchno, this]() {
  437. this->xuanZe_clicked(batchno);
  438. });
  439. int row = ui->tableWidget_2->rowCount() - 1;
  440. ui->tableWidget_2->setCellWidget(row, 0, xuanze_btn);
  441. ui->tableWidget_2->setItem(row, 1, new QTableWidgetItem(v->specs));
  442. ui->tableWidget_2->setItem(row, 2, new QTableWidgetItem(v->category));
  443. ui->tableWidget_2->setItem(row, 3, new QTableWidgetItem(v->batch_no));
  444. ui->tableWidget_2->setItem(row, 4, new QTableWidgetItem(v->color));
  445. if (!_info.isNull() && _info->batch_no == v->batch_no) {
  446. xuanze_btn->setChecked(true);
  447. currt = i;
  448. }
  449. }
  450. if (currt >= 0)
  451. ui->tableWidget_2->setCurrentCell(currt, 0);
  452. }
  453. void FixedWeightPackForm::setProInfo(const QSharedPointer<ProjectInfo> &info)
  454. {
  455. _info = info;
  456. if (!packinfo.isNull()) {
  457. packinfo->upInfo(_info);
  458. packinfo->packing_type = _info->category;
  459. }
  460. init();
  461. EditBatch();
  462. }
  463. void FixedWeightPackForm::xuanZe_clicked(QString batchno)
  464. {
  465. save();
  466. packinfo.clear();
  467. ui->tableWidget->clearContents();
  468. ui->tableWidget->setRowCount(0);
  469. // ui->tableWidget->clear();
  470. setProInfo(GlobalInfo::this_()->project().value(batchno));
  471. }
  472. void FixedWeightPackForm::del_clicked(int row)
  473. {
  474. if (packinfo.isNull())
  475. return;
  476. packinfo->delBoxInfoAt(row);
  477. restTableWidget();
  478. }
  479. void FixedWeightPackForm::restTableWidget()
  480. {
  481. ui->tableWidget->clearContents();
  482. ui->tableWidget->setRowCount(0);
  483. // ui->tableWidget->setColumnWidth(0,200);
  484. // ui->tableWidget->setColumnWidth(1,75);
  485. // ui->tableWidget->setColumnWidth(2,75);
  486. // ui->tableWidget->setColumnWidth(3,75);
  487. // ui->tableWidget->setColumnWidth(4,75);
  488. // ui->tableWidget->setColumnWidth(5,75);
  489. // ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
  490. // ui->tableWidget->setColumnWidth(0,130);
  491. // ui->tableWidget->setColumnWidth(1,45);
  492. // ui->tableWidget->setColumnWidth(2,45);
  493. // ui->tableWidget->setColumnWidth(3,45);
  494. // ui->tableWidget->setColumnWidth(4,45);
  495. // ui->tableWidget->setColumnWidth(5,45);
  496. // ui->tableWidget->resizeColumnToContents(45);
  497. // ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  498. // ui->tableWidget->resizeColumnToContents(10);
  499. // ui->tableWidget->resizeColumnsToContents();
  500. // ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
  501. // ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
  502. if (!packinfo.isNull()) {
  503. for (int i = 0; i < packinfo->boxInfoSize(); ++i) {
  504. addTableWidget(packinfo->boxInfoAt(i), i);
  505. }
  506. }
  507. upSum();
  508. }
  509. void FixedWeightPackForm::Makeup_clicked(int row)
  510. {
  511. if (packinfo.isNull())
  512. return;
  513. auto box = packinfo->boxInfoAt(row);
  514. GlobalInfo::this_()->printerBox(box);
  515. }
  516. void FixedWeightPackForm::edit_clicked(int row)
  517. {
  518. if (packinfo.isNull())
  519. return;
  520. auto box = packinfo->boxInfoAt(row);
  521. EditBoxInfoDialog dig(box, this);
  522. dig.exec();
  523. restTableWidget();
  524. }
  525. void FixedWeightPackForm::on_pushContinue_clicked()
  526. {
  527. auto dt = QDate::currentDate();
  528. auto list = Manger->getPackInfoSync(dt);
  529. if (list.isEmpty()) {
  530. dt = dt.addDays(-1);
  531. list = Manger->getPackInfoSync(dt);
  532. }
  533. if (list.isEmpty()) {
  534. QMessageBox::warning(this, tr("无可接续码单"), tr("无可接续码单"));
  535. return;
  536. }
  537. QList<PackSaveInfo> Plist;
  538. for (int i = 0; i < list.size(); i++) {
  539. if (list.at(i).packInfo->batch_no == _info->batch_no) {
  540. Plist.append(list.at(i));
  541. }
  542. }
  543. std::sort(Plist.begin(), Plist.end(), [](const PackSaveInfo &item1, const PackSaveInfo &item2) {
  544. return item1.packInfo->time() < item2.packInfo->time();
  545. });
  546. if (Plist.isEmpty()) {
  547. QMessageBox::warning(this, tr("无可接续码单"), tr("无可接续码单"));
  548. return;
  549. }
  550. QSharedPointer<PackInfo> pInfo;
  551. for (int i = Plist.size() - 1; i >= 0; --i) {
  552. auto &v = Plist.at(i);
  553. if (v.packInfo->packType != 0)
  554. continue;
  555. if (v.packInfo->boxInfoSize() < ui->comboBox->currentText().toInt()) {
  556. pInfo = v.packInfo;
  557. break;
  558. }
  559. }
  560. if (pInfo.isNull()) {
  561. QMessageBox::warning(this, tr("无可接续码单"), tr("无可接续码单"));
  562. }
  563. packinfo = pInfo;
  564. setProInfo(packinfo->info());
  565. }
  566. void FixedWeightPackForm::on_showMaoZhong_stateChanged(int)
  567. {
  568. if (ui->showMaoZhong->isChecked()) {
  569. ui->labelWidget->setText(tr("毛重"));
  570. } else {
  571. ui->labelWidget->setText(tr("净重"));
  572. }
  573. }
  574. void FixedWeightPackForm::on_pushEditBatch_clicked()
  575. {
  576. emit backup(1);
  577. }
  578. void FixedWeightPackForm::EditBatch()
  579. {
  580. if (packinfo.isNull())
  581. return;
  582. for (int i = 0; i < packinfo->boxInfoSize(); ++i) {
  583. auto box = packinfo->boxInfoAt(i);
  584. calcData();
  585. box->box_weight = int(ui->pizhong->currentText().toDouble() * 1000);
  586. box->tube_number = ui->tongshu->text().toInt();
  587. // box->bucket_weight = int(floor((ui->tongzhong->currentText().toDouble()*ui->tongshu->text().toDouble()+0.005)*100)*10);
  588. // if(chengZhongJingDu == 2){
  589. // box->gross_weight = QString::number(gross_weight*1000).toInt();
  590. // box->net_weight = QString::number(netNum*1000).toInt();
  591. //// qDebug()<<"boxNet"<<box->net_weight;
  592. //// qDebug()<<"net"<<netNum*1000;
  593. // }else if(chengZhongJingDu == 1){
  594. // box->gross_weight = QString::number(f_gross_weight*1000).toInt();
  595. // box->net_weight = QString::number(f_netNum*1000).toInt();
  596. //// qDebug()<<"f_boxNet"<<box->net_weight;
  597. //// qDebug()<<"f_net"<<f_netNum*1000;
  598. // }
  599. box->bucket_weight = int(
  600. floor((ui->tongzhong->currentText().toDouble() * box->tube_number + 0.005) * 100) * 10);
  601. int net = box->gross_weight
  602. - (ui->pizhong->currentText().toDouble()
  603. + box->tube_number * ui->tongzhong->currentText().toDouble())
  604. * 1000;
  605. if (chengZhongJingDu == 2) {
  606. box->net_weight = net;
  607. } else if (chengZhongJingDu == 1) {
  608. box->net_weight = floor(((net / 1000.00) + 0.05) * 10) * 100;
  609. }
  610. box->Level = ui->dengji->currentText();
  611. box->twist_type = ui->nianxiang->currentText();
  612. box->bucket_color = ui->guanse->currentText();
  613. box->sort = "1";
  614. // box->remark = ui->beizhu->toPlainText();
  615. }
  616. packinfo->level = ui->dengji->currentText();
  617. packinfo->level_id = ui->dengji->currentData().toInt();
  618. restTableWidget();
  619. }
  620. void FixedWeightPackForm::on_pushNoSyncList_clicked()
  621. {
  622. emit NoSyncList();
  623. }
  624. void FixedWeightPackForm::on_pushSync_clicked()
  625. {
  626. if (GlobalInfo::this_()->isNoLine()) {
  627. QMessageBox::information(this, tr("注意"), tr("离线模式不予同步"));
  628. return;
  629. }
  630. QDate tm = QDate::currentDate();
  631. GlobalInfo::this_()->doSync(tm);
  632. QMessageBox::information(this, tr("注意"), tr("同步成功"));
  633. }
  634. void FixedWeightPackForm::on_buding_clicked()
  635. {
  636. emit buding();
  637. ui->dingzhong->setChecked(true);
  638. }
  639. void FixedWeightPackForm::on_backButton_clicked()
  640. {
  641. emit back();
  642. }
  643. void FixedWeightPackForm::on_ruku_stateChanged(int arg1)
  644. {
  645. if (arg1 == 2) {
  646. isRuku = true;
  647. return;
  648. }
  649. isRuku = false;
  650. }
  651. void FixedWeightPackForm::on_useNewDataButton_clicked()
  652. {
  653. if (packinfo.isNull())
  654. return;
  655. for (int i = 0; i < packinfo->boxInfoSize(); ++i) {
  656. QSharedPointer<BoxInfo> box = packinfo->boxInfoAt(i);
  657. calcData();
  658. box->box_weight = int(ui->pizhong->currentText().toDouble() * 1000);
  659. box->tube_number = ui->tongshu->text().toInt();
  660. box->bucket_weight = int(
  661. floor((ui->tongzhong->currentText().toDouble() * box->tube_number + 0.005) * 100) * 10);
  662. int net = box->gross_weight
  663. - (ui->pizhong->currentText().toDouble()
  664. + box->tube_number * ui->tongzhong->currentText().toDouble())
  665. * 1000;
  666. if (chengZhongJingDu == 2) {
  667. box->net_weight = net;
  668. } else if (chengZhongJingDu == 1) {
  669. box->net_weight = floor(((net / 1000.00) + 0.05) * 10) * 100;
  670. }
  671. // qDebug()<<"单精度"<<floor(((net/1000.00)+0.05)*10)*100;
  672. box->Level = ui->dengji->currentText();
  673. box->twist_type = ui->nianxiang->currentText();
  674. box->bucket_color = ui->guanse->currentText();
  675. box->sort = "1";
  676. }
  677. packinfo->level = ui->dengji->currentText();
  678. packinfo->level_id = ui->dengji->currentData().toInt();
  679. packinfo->customer = ui->taitou->text();
  680. packinfo->telephone = ui->taiPhone->text();
  681. packinfo->address = ui->lineEdit_address->text();
  682. packinfo->autoRuku = ui->ruku->isChecked();
  683. restTableWidget();
  684. }
  685. void FixedWeightPackForm::setShortcutConfig()
  686. {
  687. QSettings configIniWrite("jcxclient.ini", QSettings::IniFormat);
  688. QVariant key1 = configIniWrite.value("Shortcut/key1", "F1");
  689. QVariant key2 = configIniWrite.value("Shortcut/key2", "F2");
  690. QVariant key3 = configIniWrite.value("Shortcut/key3", "F3");
  691. ui->addBoxList->setShortcut(QKeySequence(key1.toString()));
  692. ui->addPackList->setShortcut(QKeySequence(key2.toString()));
  693. ui->pushPiLiang->setShortcut(QKeySequence(key3.toString()));
  694. }