uncertainweightpackform.cpp 25 KB

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