uncertainweightpackform.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  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)
  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. connect(&packConfig,&RemotePackConfig::configUpdate,this,&UncertainWeightPackForm::upconfig);
  15. connect(&packConfig,&RemotePackConfig::dengJIConfigUp,this,&UncertainWeightPackForm::upDengjiInfo);
  16. connect(&specs,&SelectSpecs::change,this,&UncertainWeightPackForm::changeSpecs);
  17. ui->widget_6->setEnabled(false);
  18. //筒数限制,true限制
  19. istubeNumTure = false;
  20. auto dt = CacheFile::readFile("budingzhongInfo.cache");
  21. auto list = QString::fromUtf8(dt).split("[,]");
  22. if(list.size() == 2){
  23. ui->taitou->setText(list.at(0));
  24. ui->taiPhone->setText(list.at(1));
  25. }
  26. ui->tableWidget_2->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
  27. // ui->pushStart->hide();
  28. }
  29. UncertainWeightPackForm::~UncertainWeightPackForm()
  30. {
  31. delete ui;
  32. }
  33. void UncertainWeightPackForm::on_pushBack_clicked()
  34. {
  35. if(!packinfo.isNull()){
  36. aputils.insertProductSQL(packinfo);
  37. aputils.doSend(aputils.toJson(packinfo));
  38. }
  39. emit back();
  40. QStringList list;
  41. list << ui->taitou->text() << ui->taiPhone->text();
  42. CacheFile f;
  43. f.writeFile("budingzhongInfo.cache",list.join("[,]").toUtf8());
  44. }
  45. //从秤中获取毛重、皮重、净重、筒数------每100毫秒一次
  46. void UncertainWeightPackForm::calcData()
  47. {
  48. if(autoRead == true){
  49. ui->grossWeight->setText(QString::number(GlobalInfo::this_()->GetScaleData().gross_widget));
  50. }
  51. // qDebug()<<autoRead;
  52. netNum = ui->grossWeight->text().toDouble()-ui->pizhong->currentText().toDouble()-ui->tongshu->text().toDouble()*ui->tongzhong->currentText().toDouble();
  53. if(netNum<0){
  54. netNum = 0.00;
  55. }
  56. if(istubeNumTure){
  57. if(ui->tongshu->text().toInt()>tubeNumMax || ui->tongshu->text().toInt()<tubeNumMin){
  58. ui->tongshu->setValue(tubeNumMin);
  59. }
  60. }
  61. // ui->netWeight_2->setText(QString::number(netNum));
  62. // ui->tongshu->setText(QString::number(GlobalInfo::this_()->GetScaleData().tongshu));
  63. }
  64. void UncertainWeightPackForm::on_addPackList_clicked()
  65. {
  66. if(packinfo.isNull()) return;
  67. qDebug()<<"this";
  68. if(packinfo->boxes().size()>0){
  69. packinfo->quantity = packinfo->boxes().size();
  70. packinfo->level_id = ui->dengji->currentData().toInt();
  71. packinfo->machine_no = ui->jitai->currentText();
  72. packinfo->carton_type = ui->zhixiang->currentText();
  73. packinfo->customer = ui->taitou->text();
  74. packinfo->telephone = ui->taiPhone->text();
  75. }
  76. //把数据添加到数据库里
  77. aputils.insertProductSQL(packinfo);
  78. //发送码单 packinfo 数据, 转换为 json数据发送
  79. aputils.doSend(aputils.toJson(packinfo));
  80. packinfo.clear();
  81. }
  82. void UncertainWeightPackForm::on_pushStart_clicked()
  83. {
  84. // _info.customer = ui->taitou->text();
  85. // _info.telephone = ui->taiPhone->text();
  86. if(ui->pushStart->isChecked()){
  87. ui->pushStart->setChecked(true);
  88. ui->addBoxList->setDisabled(false);
  89. ui->addPackList->setDisabled(false);
  90. ui->widget_3->setEnabled(false);
  91. ui->widget_5->setEnabled(false);
  92. ui->widget_7->setEnabled(false);
  93. ui->tongzhong->setEnabled(true);
  94. } else {
  95. init();
  96. }
  97. }
  98. void UncertainWeightPackForm::on_addBoxList_clicked()
  99. {
  100. setTableWidget();
  101. if(ui->tongshu->text()!="0"&&!ui->tongshu->text().toInt()){
  102. QMessageBox::information(this,tr("注意"),tr("筒数异常"));
  103. return;
  104. }
  105. //当当前箱数大于等于最大箱数是启动on_addPackList_clicked();
  106. if(packinfo->boxes().size()>=ui->mashu->currentText().toInt()){
  107. on_addPackList_clicked();
  108. }
  109. setTableWidget();
  110. auto box = packinfo->addBoxInfo();
  111. box->box_weight = int(ui->pizhong->currentText().toDouble()*1000);
  112. box->tube_number = ui->tongshu->text().toInt();
  113. box->bucket_weight = int(ui->pizhong->currentText().toInt()*ui->tongshu->text().toDouble()*1000);
  114. box->gross_weight = int(ui->grossWeight->text().toDouble()*1000);
  115. box->net_weight = int(netNum*1000);
  116. box->Level = ui->dengji->currentText();
  117. box->twist_type = ui->nianxiang->currentText();
  118. box->bucket_color = ui->guanse->currentText();
  119. box->sort = "1";
  120. // box->remark = ui->beizhu->toPlainText();
  121. packinfo->level = ui->dengji->currentText();
  122. packinfo->level_id = ui->dengji->currentData().toInt();
  123. ui->tableWidget->setRowCount(ui->tableWidget->rowCount()+1);
  124. addTableWidget(box);//添加tablewidget
  125. // 把box数据添加到packinfo的boxes数据表里;
  126. packinfo->addBoxInfoList(box);
  127. //添加数据库
  128. aputils.insertDetailsSQL(box,packinfo->codeSingle());
  129. ui->labelTongZHong->setText(QString::number(packinfo->tube_number()));
  130. ui->labelWight->setText(getDecimalbit(packinfo->gross_weight() / 1000.00));
  131. ui->labelJing->setText(getDecimalbit(packinfo->net_weight() / 1000.00));
  132. }
  133. //自动读数按钮
  134. void UncertainWeightPackForm::on_handleRead_2_clicked()
  135. {
  136. if(autoRead==true){
  137. autoRead = false;
  138. ui->handleRead_2->setText("自动读数");
  139. ui->label->setText("已开启手动");
  140. return;
  141. }
  142. autoRead = true;
  143. ui->handleRead_2->setText("手动读数");
  144. ui->label->setText("已开启自动");
  145. }
  146. //筒数是否固定
  147. void UncertainWeightPackForm::on_tongshuguding_currentIndexChanged(const QString &arg1)
  148. {
  149. if(arg1=="固定"){
  150. ui->widget_6->setEnabled(false);
  151. return;
  152. }
  153. ui->widget_6->setEnabled(true);
  154. }
  155. //筒数是否限制
  156. void UncertainWeightPackForm::on_tongshuxianzhi_stateChanged(int arg1)
  157. {
  158. qDebug()<<arg1;
  159. if(arg1 == 2){
  160. istubeNumTure = true;
  161. return;
  162. }
  163. istubeNumTure = false;
  164. }
  165. //检查packinfo isNull
  166. void UncertainWeightPackForm::setTableWidget()
  167. {
  168. if(packinfo.isNull()){
  169. packinfo.reset(new PackInfo(_info));
  170. packinfo->operator_id = GlobalInfo::this_()->user().userId;
  171. packinfo->packing_time = QDate::currentDate().toString("yy-MM-dd");
  172. packinfo->packing_type = _info.category;
  173. ui->tableWidget->clearContents();
  174. ui->tableWidget->setRowCount(0);
  175. ui->tableWidget->setColumnWidth(0,20);
  176. ui->tableWidget->setColumnWidth(1,20);
  177. ui->tableWidget->setColumnWidth(2,80);
  178. ui->tableWidget->setColumnWidth(3,80);
  179. ui->tableWidget->setColumnWidth(4,80);
  180. ui->tableWidget->setColumnWidth(5,40);
  181. }
  182. }
  183. void UncertainWeightPackForm::addTableWidget(QSharedPointer<BoxInfo> box)
  184. {
  185. ui->tableWidget->setItem(ui->tableWidget->rowCount()-1,0,new QTableWidgetItem(QString::number(ui->tableWidget->rowCount())));
  186. ui->tableWidget->setItem(ui->tableWidget->rowCount()-1,1,new QTableWidgetItem(QString::number(box->tube_number)));
  187. ui->tableWidget->setItem(ui->tableWidget->rowCount()-1,2,new QTableWidgetItem(getDecimalbit(box->gross_weight / 1000.00)));
  188. ui->tableWidget->setItem(ui->tableWidget->rowCount()-1,3,new QTableWidgetItem(getDecimalbit(box->box_weight / 1000.00)));
  189. ui->tableWidget->setItem(ui->tableWidget->rowCount()-1,4,new QTableWidgetItem(getDecimalbit(box->net_weight / 1000.00)));
  190. ui->tableWidget->setItem(ui->tableWidget->rowCount()-1,5,new QTableWidgetItem(box->caseNumber()));
  191. auto btn_1 = new QPushButton("删除");
  192. auto btn_2 = new QPushButton("修改");
  193. auto btn_3 = new QPushButton("补打");
  194. QWidget *tmp_widget = new QWidget();
  195. QHBoxLayout *tmp_layout = new QHBoxLayout(tmp_widget);
  196. tmp_layout->addWidget(btn_1);
  197. tmp_layout->addWidget(btn_2);
  198. tmp_layout->addWidget(btn_3);
  199. tmp_layout->setMargin(0);
  200. int i = ui->tableWidget->rowCount()-1;
  201. connect(btn_1,&QPushButton::clicked,[i,this](){this->del_clicked(i);});
  202. connect(btn_3,&QPushButton::clicked,[i,this](){this->Makeup_clicked(i);});
  203. ui->tableWidget->setCellWidget(ui->tableWidget->rowCount()-1,6,tmp_widget);
  204. }
  205. void UncertainWeightPackForm::init()
  206. {
  207. // TODO: 页面进入初始化
  208. ui->pushStart->setChecked(false);
  209. ui->addBoxList->setDisabled(true);
  210. ui->addPackList->setDisabled(true);
  211. ui->widget_3->setEnabled(true);
  212. ui->widget_5->setEnabled(true);
  213. ui->widget_7->setEnabled(true);
  214. packConfig.refConfig();
  215. ui->mashu->clear();
  216. for(int i = 1;i<=20;i++){
  217. ui->mashu->addItem(QString::number(i));
  218. }
  219. ui->mashu->setCurrentText("20");
  220. specs.getInfo(0,20);
  221. }
  222. void UncertainWeightPackForm::upconfig(const DaBaoConfig &config)
  223. {
  224. // TODO:打包配置更新
  225. //机台
  226. ui->jitai->clear();
  227. ui->jitai->addItems(config.jitai);
  228. //打包工班次
  229. ui->dabaobanci->clear();
  230. ui->dabaobanci->addItems(config.daBaoGongBanCi);
  231. //皮重
  232. ui->pizhong->clear();
  233. for(int i = 0;i<config.xiangzhong.size();i++){
  234. ui->pizhong->addItem(QString::number(config.xiangzhong.at(i)));
  235. }
  236. //管色
  237. ui->guanse->clear();
  238. ui->guanse->addItems(config.guanse);
  239. //捻向
  240. ui->nianxiang->clear();
  241. ui->nianxiang->addItems(config.nianxiang);
  242. //纸箱
  243. ui->zhixiang->clear();
  244. ui->zhixiang->addItems(config.zhixiang);
  245. //筒重
  246. ui->tongzhong->clear();
  247. for(int i = 0;i<config.tongZhong.size();i++){
  248. ui->tongzhong->addItem(QString::number(config.tongZhong.at(i)));
  249. }
  250. tubeNumMin = config.buDingZhongTongShuFanWei.first;
  251. tubeNumMax = config.buDingZhongTongShuFanWei.second;
  252. //设置选择打包界面的数据为首个;
  253. ui->pizhong->setCurrentText(QString(_info.box_weight));
  254. ui->guanse->setCurrentText(_info.bucket_color);
  255. ui->zhixiang->setCurrentText(_info.carton_type);
  256. ui->tongzhong->setCurrentText(_info.bucket_weight);
  257. }
  258. void UncertainWeightPackForm::upDengjiInfo(const QList<DengJiConfigItem> & dengJis)
  259. {
  260. // TODO: 等级信息更新
  261. ui->dengji->clear();
  262. for(int i = 0;i<dengJis.size();i++){
  263. if(!dengJis.at(i).isEnable){
  264. ui->dengji->addItem(dengJis.at(i).value,dengJis.at(i).id);
  265. }
  266. }
  267. }
  268. //获取品目信息
  269. void UncertainWeightPackForm::on_searchButton_clicked()
  270. {
  271. specs.getInfo(0,20);
  272. }
  273. void UncertainWeightPackForm::changeSpecs()
  274. {
  275. ui->tableWidget_2->clearContents();
  276. ui->tableWidget_2->setRowCount(0);
  277. for(int i = 0; i < specs.currtInfo.size(); ++i){
  278. auto & v = specs.currtInfo.at(i);
  279. ui->tableWidget_2->insertRow(i);
  280. auto xuanze_btn = new QRadioButton();
  281. connect(xuanze_btn,&QPushButton::clicked,[i,this](){this->xuanZe_clicked(i);});
  282. ui->tableWidget_2->setCellWidget(i,0,xuanze_btn);
  283. ui->tableWidget_2->setItem(i,1,new QTableWidgetItem(v.specs));
  284. ui->tableWidget_2->setItem(i,2,new QTableWidgetItem(v.category));
  285. ui->tableWidget_2->setItem(i,3,new QTableWidgetItem(v.batch_no));
  286. ui->tableWidget_2->setItem(i,4,new QTableWidgetItem(v.color));
  287. }
  288. }
  289. void UncertainWeightPackForm::xuanZe_clicked(int row)
  290. {
  291. setProInfo(specs.currtInfo.at(row));
  292. packConfig.refConfig();
  293. }
  294. void UncertainWeightPackForm::del_clicked(int row)
  295. {
  296. packinfo->delBoxInfoAt(row);
  297. ui->tableWidget->clear();
  298. ui->tableWidget->setRowCount(0);
  299. for(int i = 0;i<packinfo->boxInfoSize();i++){
  300. ui->tableWidget->setRowCount(ui->tableWidget->rowCount()+1);
  301. addTableWidget(packinfo->boxInfoAt(row));
  302. }
  303. }
  304. void UncertainWeightPackForm::Makeup_clicked(int row)
  305. {
  306. djmb.printBoxInfo(packinfo->boxInfoAt(row)->caseNumber(),packinfo->boxInfoAt(row));
  307. }