fixedweightpackform.cpp 25 KB

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