Commit 8b923ad8 by guanghui.cui

修复同一个订单在两个状态都有显示的bug.如:配送中、已完成状态都显示某一订单

parent ec2b356b
......@@ -154,32 +154,33 @@ void MainForm::onOrderTableChanged(int last, int curr, OrderObject *orderObj)
table = _GetTableByVID(last);
if (table) {
for(int i=0; i<table->rowCount(); i++) {
if(!table->item(i, 1)->text().compare(orderObj->order_id)) {
qDebug()<<table->objectName()<<"222222";
table->removeRow(i);
QRichButton *btn = _GetTableBtnByVID(last);
QString text;
if(0==table->rowCount()) {
text = QString("%1").arg(btn->property("name").toString());
// 新订单栏目里为空
if (last == TABLE_VID_SHIPSELF || last == TABLE_VID_CONFIRM_MATE || table == ui->tableOther) {
emit floatStopBlink();
btn->setCounter(0);
btn->setEnableRich(false);
}
}
else {
text = QString("%1(%2)").arg(btn->property("name").toString()).arg(table->rowCount());
if (isVisible()) {
emit floatStopBlink();
}
}
btn->setText(text);
btn->setCounter(table->rowCount());
QLOG_INFO() << QString("delete order[%1] from table[%2]!").arg(orderObj->order_id).arg(table->objectName());
}
}
delOrderFromTable(table,last,orderObj);
// for(int i=0; i<table->rowCount(); i++) {
// if(!table->item(i, 1)->text().compare(orderObj->order_id)) {
// qDebug()<<table->objectName()<<"222222";
// table->removeRow(i);
// QRichButton *btn = _GetTableBtnByVID(last);
// QString text;
// if(0==table->rowCount()) {
// text = QString("%1").arg(btn->property("name").toString());
// // 新订单栏目里为空
// if (last == TABLE_VID_SHIPSELF || last == TABLE_VID_CONFIRM_MATE || table == ui->tableOther) {
// emit floatStopBlink();
// btn->setCounter(0);
// btn->setEnableRich(false);
// }
// }
// else {
// text = QString("%1(%2)").arg(btn->property("name").toString()).arg(table->rowCount());
// if (isVisible()) {
// emit floatStopBlink();
// }
// }
// btn->setText(text);
// btn->setCounter(table->rowCount());
// QLOG_INFO() << QString("delete order[%1] from table[%2]!").arg(orderObj->order_id).arg(table->objectName());
// }
// }
}
else {
if (TABLE_VID_NO_DRIVER != last) {
......@@ -194,6 +195,7 @@ void MainForm::onOrderTableChanged(int last, int curr, OrderObject *orderObj)
return;
}
delOrderFromTable(table,-1,orderObj);
int crtIndex = 0;
table->insertRow(crtIndex);
......@@ -944,3 +946,36 @@ void MainForm::setFloatWId(WId id)
{
floatWId=id;
}
void MainForm::delOrderFromTable(QTableWidget *table,int last, OrderObject *orderObj)
{
for(int i=0; i<table->rowCount(); i++) {
if(!table->item(i, 1)->text().compare(orderObj->order_id)) {
qDebug()<<table->objectName()<<"222222";
table->removeRow(i);
if(-1!=last){
QRichButton *btn = _GetTableBtnByVID(last);
QString text;
if(0==table->rowCount()) {
text = QString("%1").arg(btn->property("name").toString());
// 新订单栏目里为空
if (last == TABLE_VID_SHIPSELF || last == TABLE_VID_CONFIRM_MATE || table == ui->tableOther) {
emit floatStopBlink();
btn->setCounter(0);
btn->setEnableRich(false);
}
}
else {
text = QString("%1(%2)").arg(btn->property("name").toString()).arg(table->rowCount());
if (isVisible()) {
emit floatStopBlink();
}
}
btn->setText(text);
btn->setCounter(table->rowCount());
}
QLOG_INFO() << QString("delete order[%1] from table[%2]!").arg(orderObj->order_id).arg(table->objectName());
}
}
}
......@@ -89,6 +89,7 @@ private slots:
void onOrderMateChanged(const QString &order_id);
void on_ClearTable();
void delOrderFromTable(QTableWidget *table,int last, OrderObject *orderObj);
signals:
void floatFormShow();
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.5.1, 2017-10-20T16:52:07. -->
<!-- Written by QtCreator 3.5.1, 2017-12-01T11:58:58. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
......
......@@ -6,21 +6,81 @@
#include <string.h>
#include <iconv.h>
#include <stdlib.h>
#include <sys/file.h>
#include "pos_print.h"
#define INVALID_HANDLE_VALUE -1
int g_Handle=INVALID_HANDLE_VALUE;
int g_uBaudrate=0;
int lock_set(int fd,int type)
{
struct flock old_lock,lock;
lock.l_whence = SEEK_SET;
lock.l_start = 0;
lock.l_len = 0;
lock.l_type = type;
lock.l_pid = getpid();
fcntl(fd,F_GETLK,&lock);
if(lock.l_type != F_UNLCK)
{
if (lock.l_type == F_RDLCK)
{
printf("Read lock already set by %d\n",lock.l_pid);
}
else if (lock.l_type == F_WRLCK)
{
printf("Write lock already set by %d\n",lock.l_pid);
}
}
lock.l_type = type;
if ((fcntl(fd,F_SETLKW,&lock)) < 0)
{
printf("Lock failed : type = %d\n",lock.l_type);
return 1;
}
switch (lock.l_type)
{
case F_RDLCK:
{
printf("Read lock set by %d\n",getpid());
}
break;
case F_WRLCK:
{
printf("write lock set by %d\n",getpid());
}
break;
case F_UNLCK:
{
printf("Release lock by %d\n",getpid());
return 1;
}
break;
default:
break;
}
return 0;
}
int open_port(const char* szPort)
{
//if(g_Handle != INVALID_HANDLE_VALUE)
// close(g_Handle);
g_Handle= open(szPort, O_RDWR | O_NOCTTY | O_NDELAY);
g_Handle= open(szPort, O_RDWR | O_NOCTTY | O_APPEND/* | O_NDELAY*/);
if (g_Handle == INVALID_HANDLE_VALUE)
printf("open_port failed\n");
else
printf("port is open ok \n");
//lock_set(g_Handle, F_WRLCK);
return (g_Handle);
}
......@@ -69,10 +129,13 @@ bool set_port(int Baudrate)
write(g_Handle, &strCutPaper, 4);
//sleep(1);
char temp[3]={0};
char temp[4]={0};
int recvLen=read(g_Handle,temp,3);
temp[recvLen]='\0';
printf("-----length:%d recv:%d\n",recvLen,temp[0]);
for(int i=0;i<recvLen;i++)
{
printf("-----length:%d recv[%d]:%d\n",recvLen,i,temp[i]);
}
if(0==recvLen){
tcflush(g_Handle,TCIOFLUSH); //清空终端未完成的输入/输出请求及数据
close_port();
......@@ -86,6 +149,7 @@ void close_port()
if (g_Handle != INVALID_HANDLE_VALUE)
{
sleep(2);
// lock_set(g_Handle, F_UNLCK); /* 给文件解锁*/
// int res = tcflush(g_Handle,TCIOFLUSH);
printf("close begin\n");
close(g_Handle);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment