Commit dce82260 by xiaoqing.gu

1、订单详情里面的按钮无法点击(包含拒单、打印小票、同意退款、拒绝退款等操作按钮)2、界面上,订单详情中【商品汇总】中不应包含配送费与包装费、【优惠费】未展示优…

1、订单详情里面的按钮无法点击(包含拒单、打印小票、同意退款、拒绝退款等操作按钮)2、界面上,订单详情中【商品汇总】中不应包含配送费与包装费、【优惠费】未展示优惠金额 3、订单管理和退单中搜索订单结果中,不应包含【退款中】、【同意退款】的订单 4、订单备注、收获地址过长时,界面展示信息不全 5、渠道信息应该区分自提、外卖、饿了么等,实际未区分
parent 6fe2685b
#include "ping.h"
USHORT CPing::s_usPacketSeq = 0;
CPing::CPing() :
m_szICMPData(NULL),
m_bIsInitSucc(FALSE)
{
WSADATA WSAData;
WSAStartup(MAKEWORD(1, 1), &WSAData);
m_event = WSACreateEvent();
m_usCurrentProcID = (USHORT)GetCurrentProcessId();
if ((m_sockRaw = WSASocket(AF_INET, SOCK_RAW, IPPROTO_ICMP, NULL, 0, 0)) != SOCKET_ERROR)
{
WSAEventSelect(m_sockRaw, m_event, FD_READ);
m_bIsInitSucc = TRUE;
m_szICMPData = (char*)malloc(DEF_PACKET_SIZE + sizeof(ICMPHeader));
if (m_szICMPData == NULL)
{
m_bIsInitSucc = FALSE;
}
}
}
CPing::~CPing()
{
WSACleanup();
if (NULL != m_szICMPData)
{
free(m_szICMPData);
m_szICMPData = NULL;
}
}
BOOL CPing::Ping(DWORD dwDestIP, PingReply *pPingReply, DWORD dwTimeout)
{
return PingCore(dwDestIP, pPingReply, dwTimeout);
}
BOOL CPing::Ping(char *szDestIP, PingReply *pPingReply, DWORD dwTimeout)
{
if (NULL != szDestIP)
{
return PingCore(inet_addr(szDestIP), pPingReply, dwTimeout);
}
return FALSE;
}
BOOL CPing::PingCore(DWORD dwDestIP, PingReply *pPingReply, DWORD dwTimeout)
{
//判断初始化是否成功
if (!m_bIsInitSucc)
{
return FALSE;
}
//配置SOCKET
sockaddr_in sockaddrDest;
sockaddrDest.sin_family = AF_INET;
sockaddrDest.sin_addr.s_addr = dwDestIP;
int nSockaddrDestSize = sizeof(sockaddrDest);
//构建ICMP包
int nICMPDataSize = DEF_PACKET_SIZE + sizeof(ICMPHeader);
ULONG ulSendTimestamp = GetTickCountCalibrate();
USHORT usSeq = ++s_usPacketSeq;
memset(m_szICMPData, 0, nICMPDataSize);
ICMPHeader *pICMPHeader = (ICMPHeader*)m_szICMPData;
pICMPHeader->m_byType = ECHO_REQUEST;
pICMPHeader->m_byCode = 0;
pICMPHeader->m_usID = m_usCurrentProcID;
pICMPHeader->m_usSeq = usSeq;
pICMPHeader->m_ulTimeStamp = ulSendTimestamp;
pICMPHeader->m_usChecksum = CalCheckSum((USHORT*)m_szICMPData, nICMPDataSize);
//发送ICMP报文
if (sendto(m_sockRaw, m_szICMPData, nICMPDataSize, 0, (struct sockaddr*)&sockaddrDest, nSockaddrDestSize) == SOCKET_ERROR)
{
return FALSE;
}
//判断是否需要接收相应报文
if (pPingReply == NULL)
{
return TRUE;
}
char recvbuf[256] = {"\0"};
while (TRUE)
{
//接收响应报文
if (WSAWaitForMultipleEvents(1, &m_event, FALSE, 100, FALSE) != WSA_WAIT_TIMEOUT)
{
WSANETWORKEVENTS netEvent;
WSAEnumNetworkEvents(m_sockRaw, m_event, &netEvent);
if (netEvent.lNetworkEvents & FD_READ)
{
ULONG nRecvTimestamp = GetTickCountCalibrate();
int nPacketSize = recvfrom(m_sockRaw, recvbuf, 256, 0, (struct sockaddr*)&sockaddrDest, &nSockaddrDestSize);
if (nPacketSize != SOCKET_ERROR)
{
IPHeader *pIPHeader = (IPHeader*)recvbuf;
USHORT usIPHeaderLen = (USHORT)((pIPHeader->m_byVerHLen & 0x0f) * 4);
ICMPHeader *pICMPHeader = (ICMPHeader*)(recvbuf + usIPHeaderLen);
if (pICMPHeader->m_usID == m_usCurrentProcID //是当前进程发出的报文
&& pICMPHeader->m_byType == ECHO_REPLY //是ICMP响应报文
&& pICMPHeader->m_usSeq == usSeq //是本次请求报文的响应报文
)
{
pPingReply->m_usSeq = usSeq;
pPingReply->m_dwRoundTripTime = nRecvTimestamp - pICMPHeader->m_ulTimeStamp;
pPingReply->m_dwBytes = nPacketSize - usIPHeaderLen - sizeof(ICMPHeader);
pPingReply->m_dwTTL = pIPHeader->m_byTTL;
return TRUE;
}
}
}
}
//超时
if (GetTickCountCalibrate() - ulSendTimestamp >= dwTimeout)
{
return FALSE;
}
}
}
USHORT CPing::CalCheckSum(USHORT *pBuffer, int nSize)
{
unsigned long ulCheckSum=0;
while(nSize > 1)
{
ulCheckSum += *pBuffer++;
nSize -= sizeof(USHORT);
}
if(nSize )
{
ulCheckSum += *(UCHAR*)pBuffer;
}
ulCheckSum = (ulCheckSum >> 16) + (ulCheckSum & 0xffff);
ulCheckSum += (ulCheckSum >>16);
return (USHORT)(~ulCheckSum);
}
ULONG CPing::GetTickCountCalibrate()
{
static ULONG s_ulFirstCallTick = 0;
static LONGLONG s_ullFirstCallTickMS = 0;
SYSTEMTIME systemtime;
FILETIME filetime;
GetLocalTime(&systemtime);
SystemTimeToFileTime(&systemtime, &filetime);
LARGE_INTEGER liCurrentTime;
liCurrentTime.HighPart = filetime.dwHighDateTime;
liCurrentTime.LowPart = filetime.dwLowDateTime;
LONGLONG llCurrentTimeMS = liCurrentTime.QuadPart / 10000;
if (s_ulFirstCallTick == 0)
{
s_ulFirstCallTick = GetTickCount();
}
if (s_ullFirstCallTickMS == 0)
{
s_ullFirstCallTickMS = llCurrentTimeMS;
}
return s_ulFirstCallTick + (ULONG)(llCurrentTimeMS - s_ullFirstCallTickMS);
}
#ifndef PING_H
#define PING_H
#include <WinSock2.h>
#include <windows.h>
//这里需要导入库 Ws2_32.lib,在不同的IDE下可能不太一样
//#pragma comment(lib, "Ws2_32.lib")
#define DEF_PACKET_SIZE 32
#define ECHO_REQUEST 8
#define ECHO_REPLY 0
struct IPHeader
{
BYTE m_byVerHLen; //4位版本+4位首部长度
BYTE m_byTOS; //服务类型
USHORT m_usTotalLen; //总长度
USHORT m_usID; //标识
USHORT m_usFlagFragOffset; //3位标志+13位片偏移
BYTE m_byTTL; //TTL
BYTE m_byProtocol; //协议
USHORT m_usHChecksum; //首部检验和
ULONG m_ulSrcIP; //源IP地址
ULONG m_ulDestIP; //目的IP地址
};
struct ICMPHeader
{
BYTE m_byType; //类型
BYTE m_byCode; //代码
USHORT m_usChecksum; //检验和
USHORT m_usID; //标识符
USHORT m_usSeq; //序号
ULONG m_ulTimeStamp; //时间戳(非标准ICMP头部)
};
struct PingReply
{
USHORT m_usSeq;
DWORD m_dwRoundTripTime;
DWORD m_dwBytes;
DWORD m_dwTTL;
};
class CPing
{
public:
CPing();
~CPing();
BOOL Ping(DWORD dwDestIP, PingReply *pPingReply = NULL, DWORD dwTimeout = 2000);
BOOL Ping(char *szDestIP, PingReply *pPingReply = NULL, DWORD dwTimeout = 2000);
private:
BOOL PingCore(DWORD dwDestIP, PingReply *pPingReply, DWORD dwTimeout);
USHORT CalCheckSum(USHORT *pBuffer, int nSize);
ULONG GetTickCountCalibrate();
private:
SOCKET m_sockRaw;
WSAEVENT m_event;
USHORT m_usCurrentProcID;
char *m_szICMPData;
BOOL m_bIsInitSucc;
private:
static USHORT s_usPacketSeq;
};
#endif // PING_H
#include "networkcheckwork.h"
#include "base/Network/ping.h"
#include <QApplication>
#include <QSettings>
#include "preDefine.h"
#include "event/fmapplication.h"
#include "event/posevent.h"
#include "QsLog.h"
NetworkCheckWork::NetworkCheckWork(WorkObject *parent) : WorkObject(parent)
{
_flag = true;
QString filename = qApp->applicationDirPath() + "/" + CONFIG_NAME;
_checkIP = QSettings(filename, QSettings::IniFormat).value(CONFIG_CHECKIP_IP).toString();
_checkNum = QSettings(filename, QSettings::IniFormat).value(CONFIG_CHECKIP_INDEX).toInt();
}
NetworkCheckWork::~NetworkCheckWork()
{
while(!_stoped)
{
_stopflag = true;
emit quit();
EVENTWAIT(10);
}
}
void NetworkCheckWork::workstart()
{
QLOG_INFO() << "NetworkCheckWork::workStart : " << QThread::currentThreadId();
CPing netPing;
bool flag = false;
PingReply reply = { 0 };
char ipbuf[MAX_PATH] = { 0 };
strcpy(ipbuf, _checkIP.toUtf8().data());
QLOG_DEBUG() << "NetworkCheckWork::workstart ipbuf:" << ipbuf;
while(!_stopflag) {
flag = netPing.Ping(ipbuf, &reply);
if(flag) {
index = 0;
} else {
index++;
}
bool status = index < _checkNum;
QVariantMap map;
map.insert(EVENT_KEY_NETWORKSTATUS, status);
POSTEVENTTYPE(PosEvent::s_network_outtime,map,QVariantMap);
if(_stopflag) {
break;
}
QTimer timer;
QEventLoop loop;
connect(this, &NetworkCheckWork::quit, &loop, &QEventLoop::quit);
connect(&timer, &QTimer::timeout, &loop, &QEventLoop::quit);
timer.start(DEFAULT_NETWORK_TIMEOUT);
loop.exec();
}
QLOG_INFO() << "NetworkCheckWork::workstart quit";
_stoped = true;
}
#ifndef NETWORKCHECKWORK_H
#define NETWORKCHECKWORK_H
#include "workobject.h"
class NetworkCheckWork : public WorkObject
{
public:
NetworkCheckWork(WorkObject *parent = 0);
~NetworkCheckWork();
public slots:
void workstart();
private:
bool _flag;
//记录超时次数
int index;
QString _checkIP;
int _checkNum;
};
#endif // NETWORKCHECKWORK_H
...@@ -53,7 +53,7 @@ OrderGetWork::OrderGetWork(WorkObject *parent) : WorkObject(parent) ...@@ -53,7 +53,7 @@ OrderGetWork::OrderGetWork(WorkObject *parent) : WorkObject(parent)
_timer.start((TIMEOUT_TOKEN_LOGIN)); _timer.start((TIMEOUT_TOKEN_LOGIN));
} }
OrderGetWork::~OrderGetWork() OrderGetWork::~ OrderGetWork()
{ {
while(!_stoped) while(!_stoped)
{ {
......
#ifndef ORDERLOCALIZEWORK_H #ifndef ORDERLOCALIZEWORK_H
#define ORDERLOCALIZEWORK_H #define ORDERLOCALIZEWORK_H
#include <QObject> #include <QObject>
......
...@@ -14,7 +14,9 @@ ...@@ -14,7 +14,9 @@
#include "control/pickuporderwork.h" #include "control/pickuporderwork.h"
#include "control/prtlocalizework.h" #include "control/prtlocalizework.h"
#include "control/stallsgetwork.h" #include "control/stallsgetwork.h"
#include "control/networkcheckwork.h"
#include "base/Dump/dump.h" #include "base/Dump/dump.h"
#include "base/DB/fm_database.h"
//#include "view/loginform.h" //#include "view/loginform.h"
#include "view/newloginform.h" #include "view/newloginform.h"
#include <QVariantMap> #include <QVariantMap>
...@@ -23,6 +25,7 @@ ...@@ -23,6 +25,7 @@
#include <QsLog.h> #include <QsLog.h>
#include <QResource> #include <QResource>
#include <QSettings> #include <QSettings>
#include <QJsonObject>
#include <Windows.h> #include <Windows.h>
#ifdef FM_MAIN_TEST #ifdef FM_MAIN_TEST
...@@ -118,6 +121,9 @@ void InitLog(); ...@@ -118,6 +121,9 @@ void InitLog();
void InitCfgInfo(QString &geturl, QString &pushurl, QString &autoconf); void InitCfgInfo(QString &geturl, QString &pushurl, QString &autoconf);
void InitPtr(); void InitPtr();
//判断数据库是否存在,不存在且配置文件配置了打印机则将配置转成db
void ConfigToDB();
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
SetUnhandledExceptionFilter(FMExcpHandler); SetUnhandledExceptionFilter(FMExcpHandler);
...@@ -125,6 +131,7 @@ int main(int argc, char *argv[]) ...@@ -125,6 +131,7 @@ int main(int argc, char *argv[])
if(CheckOnly() != 0) if(CheckOnly() != 0)
return -1; return -1;
QApplication a(argc, argv); QApplication a(argc, argv);
QDir::setCurrent(a.applicationDirPath()); QDir::setCurrent(a.applicationDirPath());
...@@ -132,12 +139,21 @@ int main(int argc, char *argv[]) ...@@ -132,12 +139,21 @@ int main(int argc, char *argv[])
InitLog(); InitLog();
LoadTheme(QString("deaufult")); LoadTheme(QString("deaufult"));
//判断数据库是否存在,如果不存在,而且配置了打印机和小票机,将配置转成db
QString printIni = QString(qApp->applicationDirPath() + "/" + DEFAULT_PRTDBNAME);
QFile printIniFile;
printIniFile.setFileName(printIni);
if(!printIniFile.exists()) {
// ConfigToDB();
}
QLOG_INFO() << "--------------------------------takeout start------------------------------------"; QLOG_INFO() << "--------------------------------takeout start------------------------------------";
//线程必须定义 //线程必须定义
QThread thread; QThread thread;
QThread threadt; QThread threadt;
QThread prtthreadt; QThread prtthreadt;
QThread prtthreadpickup; QThread prtthreadpickup;
QThread checkipthread;
//获取档口线程 //获取档口线程
QThread stallsThread; QThread stallsThread;
...@@ -169,6 +185,9 @@ int main(int argc, char *argv[]) ...@@ -169,6 +185,9 @@ int main(int argc, char *argv[])
//档口获取 //档口获取
StallsGetWork stallsgetwork; StallsGetWork stallsgetwork;
//网络超时工作
NetworkCheckWork networkcheckwork;
stallsgetwork.setUrl(geturl); stallsgetwork.setUrl(geturl);
...@@ -185,13 +204,18 @@ int main(int argc, char *argv[]) ...@@ -185,13 +204,18 @@ int main(int argc, char *argv[])
pickuporderwork.moveToThread(&prtthreadpickup, true); pickuporderwork.moveToThread(&prtthreadpickup, true);
prtlocalizework.moveToThread(&prtthreadpickup, false); prtlocalizework.moveToThread(&prtthreadpickup, false);
networkcheckwork.moveToThread(&checkipthread, true);
stallsgetwork.moveToThread(&stallsThread, true); stallsgetwork.moveToThread(&stallsThread, true);
//启动tcp长链接和拉单工作流 //启动tcp长链接和拉单工作流
thread.start(); thread.start();
threadt.start(); threadt.start();
prtthreadt.start(); prtthreadt.start();
prtthreadpickup.start(); prtthreadpickup.start();
checkipthread.start();
stallsThread.start(); stallsThread.start();
//界面类定义及初始化 //界面类定义及初始化
#ifndef FM_NEW_UI #ifndef FM_NEW_UI
MainForm mainform; MainForm mainform;
...@@ -323,4 +347,71 @@ int CheckOnly() ...@@ -323,4 +347,71 @@ int CheckOnly()
return 0; return 0;
} }
void ConfigToDB()
{
FMDataBase db(qApp->applicationDirPath() + "/" + DEFAULT_PRTDBNAME);
db.creat(QString("create table prtlist (prt_id varchar(80) primary key,"
"prt_name text,prt_type int(1),prt_config text,prt_stalls text)"), DEFAULT_PRTFORM);
QString filename = qApp->applicationDirPath() + "/" + PREINTER_CONSS;
// QString prttype = QSettings(filename, QSettings::IniFormat).value(INI_BASE_STOREID).toString();
// QString name = "";
// QLOG_DEBUG() << "--input--" << "name" << name << "";
// QString strtime = QDateTime::currentDateTime().toString("yyyyMMddhhmmss");
// if(_prttype == 0)
// {
// name = QString::fromUtf8("\xE5\xB0\x8F\xE7\xA5\xA8") + strtime;
// }
// else if(_prttype == 1)
// {
// name = QString::fromUtf8("\xE6\x9D\xAF\xE8\xB4\xB4") + strtime;
// }
// else if(_prttype == 2)
// {
// name = QString::fromUtf8("\xE5\x90\x8E\xE5\x8E\xA8") + strtime;
// }
// else
// {
// return ;
// }
QString strtime = QDateTime::currentDateTime().toString("yyyyMMddhhmmss");
QString prtId = QString::fromUtf8("\xE5\xB0\x8F\xE7\xA5\xA8") + strtime;
QString prtName = QSettings(filename, QSettings::IniFormat).value(PRT_INI_NAME).toString();
QString prtType = "0"; //小票打印机
QJsonObject prtConfig;
int type = QSettings(filename, QSettings::IniFormat).value(PRT_INI_TYPE).toInt();
switch(type) {
case 0:
prtConfig.insert(PRT_CONF_COM, QSettings(filename, QSettings::IniFormat).value(PRT_INI_COMDEF_COM).toString());
prtConfig.insert(PRT_CONF_BAUDRATE, QSettings(filename, QSettings::IniFormat).value(PRT_INI_COMDEF_BAUDRATE).toString());
prtConfig.insert(PRT_CONF_DATABITS, QSettings(filename, QSettings::IniFormat).value(PRT_INI_COMDEF_DATABITS).toString());
prtConfig.insert(PRT_CONF_STOPBITS, QSettings(filename, QSettings::IniFormat).value(PRT_INI_COMDEF_STOPBITS).toString());
prtConfig.insert(PRT_CONF_PARITY, QSettings(filename, QSettings::IniFormat).value(PRT_INI_COMDEF_PARITY).toString());
prtConfig.insert(PRT_CONF_FLOWCONTROL, QSettings(filename, QSettings::IniFormat).value(PRT_INI_COMDEF_FLOWCONTROL).toString());
break;
case 1:
prtConfig.insert(PRT_CONF_LPTNAME, QSettings(filename, QSettings::IniFormat).value(PRT_INI_PARALLEL).toString());
prtConfig.insert(PRT_CONF_PAPERWIDTH, QSettings(filename, QSettings::IniFormat).value(PRT_INI_PAPERWIDTH).toString());
break;
case 3:
prtConfig.insert(PRT_CONF_IP, QSettings(filename, QSettings::IniFormat).value(PRT_INI_IP).toString());
prtConfig.insert(PRT_CONF_PAPERWIDTH, QSettings(filename, QSettings::IniFormat).value(PRT_INI_PAPERWIDTH).toString());
break;
case 4:
prtConfig.insert(PRT_CONF_NAME, QSettings(filename, QSettings::IniFormat).value(PRT_INI_NAME).toString());
prtConfig.insert(PRT_CONF_PAPERWIDTH, QSettings(filename, QSettings::IniFormat).value(PRT_INI_PAPERWIDTH).toString());
break;
default:
break;
}
}
#endif #endif
...@@ -524,6 +524,45 @@ bool PosOrderPool::GetSearchOrder(QString key, QMap<QString, QString> &map) ...@@ -524,6 +524,45 @@ bool PosOrderPool::GetSearchOrder(QString key, QMap<QString, QString> &map)
return false; return false;
} }
bool PosOrderPool::GetSearchOrder(QString key, QMap<QString, QString> &map, int condition)
{
bool serachflag = false;
if(PosOrderPool::s_mutex.tryLock())
{
if(!s_order_pool.empty())
{
for (auto it = s_order_pool.begin(); it != s_order_pool.end(); ++ it)
{
if(it.value().order_status == DefaultOrder && it.value().order_refund == DefaultOrder)
continue;
int tmpstatus;
GetOrderStatus(&it.value().order_data, tmpstatus);
QLOG_DEBUG() << "tmpstatus:" << tmpstatus;
if(!((condition == 0 && tmpstatus != ApplicationRefundOrder && tmpstatus != ApplicationPartialRefundOrder && tmpstatus != CompleteRefundOrder && tmpstatus != RefusedOrder) ||
(condition == 1 && (tmpstatus == ApplicationRefundOrder || tmpstatus == ApplicationPartialRefundOrder || tmpstatus == CompleteRefundOrder))))
continue;
QString phone = it.value().order_data.phone;
if(it.key().startsWith(key, Qt::CaseInsensitive)|| phone.startsWith(key, Qt::CaseInsensitive))
{
map.insert(it.key(), phone);
serachflag = true;
}
}
}
s_mutex.unlock();
return serachflag;
}
return false;
}
bool PosOrderPool::GetOrderStatusWithPickUpCode(QString pickupkey, int &status, int &refund_status) bool PosOrderPool::GetOrderStatusWithPickUpCode(QString pickupkey, int &status, int &refund_status)
{ {
QMutexLocker loker(&s_mutex); QMutexLocker loker(&s_mutex);
......
...@@ -113,6 +113,8 @@ typedef enum ...@@ -113,6 +113,8 @@ typedef enum
InDevelopment = 5, InDevelopment = 5,
//已送达 //已送达
ServiceOrder = 6, ServiceOrder = 6,
//已拒单
RefusedOrder = 7,
//申请退款 //申请退款
ApplicationRefundOrder = 20, ApplicationRefundOrder = 20,
//申请部分退款 //申请部分退款
...@@ -222,6 +224,9 @@ public: ...@@ -222,6 +224,9 @@ public:
} }
virtual bool event(QEvent *e); virtual bool event(QEvent *e);
static bool GetSearchOrder(QString key, QMap<QString, QString> &map, int condition);
private: private:
static void UpdateOrderNum(const OrderObject *order, const OrderObject *orderold = NULL); static void UpdateOrderNum(const OrderObject *order, const OrderObject *orderold = NULL);
......
...@@ -219,7 +219,7 @@ ...@@ -219,7 +219,7 @@
#define STALLS_KEY_FILEPRODUCTID "file_product_id" #define STALLS_KEY_FILEPRODUCTID "file_product_id"
#define STALLS_KEY_FILEDEPART "is_file_depart" #define STALLS_KEY_FILEDEPART "is_file_depart"
#define STALLS_KEY_PAGEDEPART "is_file_depart" #define STALLS_KEY_PAGEDEPART "is_file_depart"
#define STALLS_KEY_PORDDEPART "is_product_departl" #define STALLS_KEY_PORDDEPART "is_product_depart"
#define STALLS_KEY_PAGENUM "print_number" #define STALLS_KEY_PAGENUM "print_number"
#define EVENT_KEY_SEASIONCODE "reason_code" #define EVENT_KEY_SEASIONCODE "reason_code"
...@@ -334,9 +334,55 @@ ...@@ -334,9 +334,55 @@
#define PRT_CONF_HIGH "high" #define PRT_CONF_HIGH "high"
#define PRT_CONF_WIGTH "width" #define PRT_CONF_WIGTH "width"
//打印配置文件printer.ini字段
#define PRT_INI_NAME "Printer/Name"
#define PRT_INI_MODE "Printer/Mode"
#define PRT_INI_PAPERWIDTH "Printer/PaperWidth"
#define PRT_INI_TYPE "Printer/type"
#define PRT_INI_PRINTTYPE "Printer/printType"
#define PRT_INI_PARALLEL "Printer/parallel"
#define PRT_INI_IP "Printer/IP"
#define PRT_INI_ALL "Printer/All"
#define PRT_INI_LOGDAYS "Printer/LogDays"
#define PRT_INI_PRINTLABEL "Printer/Printlabel"
#define PRT_INI_WIGTH "Printer/wigth"
#define PRT_INI_HIGH "Printer/high"
#define PRT_INI_LABELTYPE "Printer/labeltype"
#define PRT_INI_LABELPRTTYPE "Printer/labelprttype"
//小票机串口参数配置
#define PRT_INI_COMDEF_COM "COMDEF/com"
#define PRT_INI_COMDEF_BAUDRATE "COMDEF/Baudrate"
#define PRT_INI_COMDEF_DATABITS "COMDEF/DataBits"
#define PRT_INI_COMDEF_STOPBITS "COMDEF/StopBits"
#define PRT_INI_COMDEF_PARITY "COMDEF/Parity"
#define PRT_INI_COMDEF_FLOWCONTROL "COMDEF/FlowControl"
//副小票机串口参数配置
#define PRT_INI_OTHERCOMDEF_COM "OTHERCOMDEF/com"
#define PRT_INI_OTHERCOMDEF_BAUDRATE "OTHERCOMDEF/Baudrate"
#define PRT_INI_OTHERCOMDEF_DATABITS "OTHERCOMDEF/DataBits"
#define PRT_INI_OTHERCOMDEF_STOPBITS "OTHERCOMDEF/StopBits"
#define PRT_INI_OTHERCOMDEF_PARITY "OTHERCOMDEF/Parity"
#define PRT_INI_OTHERCOMDEF_FLOWCONTROL "OTHERCOMDEF/FlowControl"
//副小票打印机参数配置
#define PRT_INI_OTHERPRT_NAME "OtherPrinter/Name"
#define PRT_INI_OTHERPRT_MODE "OtherPrinter/Mode"
#define PRT_INI_OTHERPRT_PAPERWIDTH "OtherPrinter/PaperWidth"
#define PRT_INI_OTHERPRT_TYPE "OtherPrinter/type"
#define PRT_INI_OTHERPRT_PRINTTYPE "OtherPrinter/printType"
#define PRT_INI_OTHERPRT_PARALLEL "OtherPrinter/parallel"
#define PRT_INI_OTHERPRT_IP "OtherPrinter/IP"
#define DEFAULT_STALLS_TIMEOUT (60*1000) #define DEFAULT_STALLS_TIMEOUT (60*1000)
#define DEFAULT_NETWORK_TIMEOUT (5*1000)
#define DEFAULT_PAGE_SIZE 4096 #define DEFAULT_PAGE_SIZE 4096
#define DEFAULT_CONFIG_SIZE 1024 #define DEFAULT_CONFIG_SIZE 1024
//ping的地址
#define CONFIG_CHECKIP_IP "CheckIP/ip"
#define CONFIG_CHECKIP_INDEX "CheckIP/index"
#endif // PREDEFINE_H #endif // PREDEFINE_H
...@@ -76,7 +76,9 @@ SOURCES += main.cpp \ ...@@ -76,7 +76,9 @@ SOURCES += main.cpp \
model/posstallspool.cpp \ model/posstallspool.cpp \
view/prttypeform.cpp \ view/prttypeform.cpp \
view/newloginform.cpp \ view/newloginform.cpp \
view/newpickupform.cpp view/newpickupform.cpp \
base/Network/ping.cpp \
control/networkcheckwork.cpp
HEADERS += \ HEADERS += \
event/fmapplication.h \ event/fmapplication.h \
...@@ -128,7 +130,9 @@ HEADERS += \ ...@@ -128,7 +130,9 @@ HEADERS += \
model/posstallspool.h \ model/posstallspool.h \
view/prttypeform.h \ view/prttypeform.h \
view/newloginform.h \ view/newloginform.h \
view/newpickupform.h view/newpickupform.h \
base/Network/ping.h \
control/networkcheckwork.h
DISTFILES += takeout.rc DISTFILES += takeout.rc
......
...@@ -43,9 +43,12 @@ void NewDetailForm::InitData(OrderObject *orderObject, bool flag) ...@@ -43,9 +43,12 @@ void NewDetailForm::InitData(OrderObject *orderObject, bool flag)
ui->orderInfoLb_dec->setText(QString::fromLocal8Bit("【<font color=red>%1</font>】【%2】").arg(orderObject->channel_name, ui->orderInfoLb_dec->setText(QString::fromLocal8Bit("【<font color=red>%1</font>】【%2】").arg(orderObject->channel_name,
orderObject->order_id)); orderObject->order_id));
ui->orderMemoLb_dec->setText(QString::fromLocal8Bit("【%1】").arg(orderObject->remark)); ui->orderMemoLb_dec->setText(QString::fromLocal8Bit("【%1】").arg(orderObject->remark));
ui->orderMemoLb_dec->adjustSize();
ui->customerInfoLb_dec->setText(QString::fromLocal8Bit("【%1】【<font color=red>%2</font>】").arg(orderObject->customer, ui->customerInfoLb_dec->setText(QString::fromLocal8Bit("【%1】【<font color=red>%2</font>】").arg(orderObject->customer,
orderObject->phone)); orderObject->phone));
ui->addressLb_dec->setText(QString::fromLocal8Bit("【%1】【%2】").arg(orderObject->address,orderObject->address)); ui->addressLb_dec->setText(QString::fromLocal8Bit("【%1】【%2】").arg(orderObject->address,orderObject->address));
ui->addressLb_dec->adjustSize();
QDateTime dTime = QDateTime::fromTime_t(orderObject->delivery_time); QDateTime dTime = QDateTime::fromTime_t(orderObject->delivery_time);
QString timeStr = dTime.toString(QString::fromLocal8Bit("yyyy-MM-dd hh:mm")); QString timeStr = dTime.toString(QString::fromLocal8Bit("yyyy-MM-dd hh:mm"));
...@@ -188,13 +191,12 @@ void NewDetailForm::InitData(OrderObject *orderObject, bool flag) ...@@ -188,13 +191,12 @@ void NewDetailForm::InitData(OrderObject *orderObject, bool flag)
} }
ui->product_numLb->setText(QString::number(orderObject->total_amount)); ui->product_numLb->setText(QString::number(orderObject->total_amount));
ui->product_price_Lb->setText(QString::number(orderObject->total_fee/100.0)); ui->product_price_Lb->setText(QString::number(orderObject->product_fee/100.0));
ui->package_price_Lb->setText(QString::number(orderObject->package_fee/100.0)); ui->package_price_Lb->setText(QString::number(orderObject->package_fee/100.0));
ui->delivery_price_Lb->setText(QString::number(orderObject->send_fee/100.0)); ui->delivery_price_Lb->setText(QString::number(orderObject->send_fee/100.0));
int dis_amount = -(orderObject->dis_platform_fee + orderObject->dis_shop_fee)/100.0; ui->promotion_price_Lb->setText(QString::number((orderObject->discount_fee)/100.0));
ui->promotion_price_Lb->setText(QString::number(dis_amount));
ui->sumLb_dec->setText(QString::fromLocal8Bit("<font color=red>%1</font>").arg(QString::number(orderObject->shop_fee/100.0))); ui->sumLb_dec->setText(QString::fromLocal8Bit("<font color=red>%1</font>").arg(QString::number(orderObject->shop_fee/100.0)));
...@@ -551,3 +553,13 @@ void NewDetailForm::on_closeButton_clicked() ...@@ -551,3 +553,13 @@ void NewDetailForm::on_closeButton_clicked()
{ {
this->hide(); this->hide();
} }
void NewDetailForm::on_detailBtn2_clicked()
{
onOperaBtnClicked();
}
void NewDetailForm::on_detailBtn3_clicked()
{
onOperaBtnClicked();
}
...@@ -87,6 +87,8 @@ private slots: ...@@ -87,6 +87,8 @@ private slots:
bool getOtherOrderOptAndName(OrderObject *order, QString &optname, QString &name); bool getOtherOrderOptAndName(OrderObject *order, QString &optname, QString &name);
void on_closeButton_clicked(); void on_closeButton_clicked();
void on_detailBtn2_clicked();
void on_detailBtn3_clicked();
}; };
#endif // NEWDETAILFORM_H #endif // NEWDETAILFORM_H
...@@ -29,6 +29,7 @@ NewMainForm::NewMainForm(QWidget *parent) : ...@@ -29,6 +29,7 @@ NewMainForm::NewMainForm(QWidget *parent) :
_prttype = -1; _prttype = -1;
_curr_page_num = 1; _curr_page_num = 1;
_curr_check_btn = NULL; _curr_check_btn = NULL;
_type = 0;
ui->setupUi(this); ui->setupUi(this);
InitClassify(); InitClassify();
InitMainBtn(); InitMainBtn();
...@@ -196,8 +197,15 @@ void NewMainForm::onSerachOrder(const QString &key) ...@@ -196,8 +197,15 @@ void NewMainForm::onSerachOrder(const QString &key)
QMap<QString, QString> map; QMap<QString, QString> map;
_resultForm->clear(); _resultForm->clear();
if(PosOrderPool::GetSearchOrder(key, map))
//判断选中的是订单管理还是退单,给condition赋值
int condition = 0; //订单管理
if(_type == 1) {
condition = 1; //退单界面
}
if(PosOrderPool::GetSearchOrder(key, map, condition))
{ {
QLOG_DEBUG() << "PosOrderPool::GetSearchOrder map:" << map;
QMap<QString,QString>::const_iterator order; QMap<QString,QString>::const_iterator order;
for(order=map.begin(); order!=map.end(); order++) for(order=map.begin(); order!=map.end(); order++)
{ {
...@@ -815,6 +823,21 @@ void NewMainForm::InitTableWidget() ...@@ -815,6 +823,21 @@ void NewMainForm::InitTableWidget()
ui->newmaintablewidget_order->verticalHeader()->setVisible(false); ui->newmaintablewidget_order->verticalHeader()->setVisible(false);
} }
void NewMainForm::getOrderChannelName(OrderObject *order, QString &channelname)
{
if(QString("saas").compare(order->channel, Qt::CaseInsensitive) == 0 &&
(order->order_type == TimelyTakeout || order->order_type == AppointmentTakeout))
channelname = QString::fromLocal8Bit("小程序外卖");
else if(QString("saas").compare(order->channel, Qt::CaseInsensitive) == 0 &&
(order->order_type == TimelyDining || order->order_type == AppointmentDining))
channelname = QString::fromLocal8Bit("小程序堂吃");
else if(QString("saas").compare(order->channel, Qt::CaseInsensitive) == 0 &&
(order->order_type == TimelyInvite || order->order_type == AppointmentInvite))
channelname = QString::fromLocal8Bit("小程序自提");
else
channelname = order->channel_name;
}
void NewMainForm::InsertTableWidget(OrderObject &orderObject) void NewMainForm::InsertTableWidget(OrderObject &orderObject)
{ {
QTableWidget *table = ui->newmaintablewidget_order; QTableWidget *table = ui->newmaintablewidget_order;
...@@ -830,7 +853,12 @@ void NewMainForm::InsertTableWidget(OrderObject &orderObject) ...@@ -830,7 +853,12 @@ void NewMainForm::InsertTableWidget(OrderObject &orderObject)
connect(pWdg, &OrderTypeForm::showOrderInfo, this, &NewMainForm::onPickUpGetOrder); connect(pWdg, &OrderTypeForm::showOrderInfo, this, &NewMainForm::onPickUpGetOrder);
table->setCellWidget(0, 1, pWdg); //订单状态 table->setCellWidget(0, 1, pWdg); //订单状态
QTableWidgetItem *item0 = new QTableWidgetItem(QString(orderObject.channel_name));
QString channelName;
getOrderChannelName(&orderObject,channelName);
QTableWidgetItem *item0 = new QTableWidgetItem(QString(channelName));
item0->setTextAlignment(Qt::AlignCenter); item0->setTextAlignment(Qt::AlignCenter);
table->setItem(0, 2, item0); // 渠道 table->setItem(0, 2, item0); // 渠道
// QTableWidgetItem *item1 = new QTableWidgetItem(orderObject.order_id); // QTableWidgetItem *item1 = new QTableWidgetItem(orderObject.order_id);
...@@ -961,6 +989,14 @@ void NewMainForm::on_newmainbtn_clicked() ...@@ -961,6 +989,14 @@ void NewMainForm::on_newmainbtn_clicked()
QLOG_DEBUG() << "**type" << type; QLOG_DEBUG() << "**type" << type;
QLOG_DEBUG() << "**info" << pBtn->info(); QLOG_DEBUG() << "**info" << pBtn->info();
if(type.compare(MAIN_REFUND, Qt::CaseInsensitive) == 0) {
_type = 1;
} else if(type.compare(MAIN_ORDER, Qt::CaseInsensitive) == 0) {
_type = 0;
} else {
}
if(!type.isEmpty()) if(!type.isEmpty())
{ {
InitWidget(type); InitWidget(type);
......
...@@ -157,6 +157,9 @@ private: ...@@ -157,6 +157,9 @@ private:
//扫码取餐界面 //扫码取餐界面
NewPickupForm *_pickform; NewPickupForm *_pickform;
//当前选中显示界面的类型
int _type; //0是订单管理界面,1是退单管理界面
private: private:
void InitOrderWidget(QString type); void InitOrderWidget(QString type);
void InitSetWidget(); void InitSetWidget();
...@@ -177,6 +180,7 @@ private: ...@@ -177,6 +180,7 @@ private:
void SettingWidgetWithConf(int prttype, QVariantMap &map); void SettingWidgetWithConf(int prttype, QVariantMap &map);
void InitPrtList(); void InitPrtList();
bool GetPrtConfig(QString &prtconfig); bool GetPrtConfig(QString &prtconfig);
void getOrderChannelName(OrderObject *order, QString &channelname);
void InsertTableWidget(OrderObject &orderObject); void InsertTableWidget(OrderObject &orderObject);
void GetOrderStatus(OrderObject &order, int &order_status); void GetOrderStatus(OrderObject &order, int &order_status);
void InitTableWidget(); void InitTableWidget();
......
...@@ -59,7 +59,7 @@ void PickUpForm::keyPressEvent(QKeyEvent *e) ...@@ -59,7 +59,7 @@ void PickUpForm::keyPressEvent(QKeyEvent *e)
{ {
QLOG_DEBUG() << "*****************:" << status << refund_status; QLOG_DEBUG() << "*****************:" << status << refund_status;
if(refund_status == ApplicationRefundOrder || refund_status == ApplicationPartialRefundOrder) if(refund_status == ApplicationRefundOrder || refund_status == ApplicationPartialRefundOrder || refund_status == RefusedOrder)
{ {
ui->widgetrlt->show(); ui->widgetrlt->show();
ui->labelpickuprltmsg->setText(QString::fromLocal8Bit("已申请退单的订单\r\n请先拒绝退单再取餐!")); ui->labelpickuprltmsg->setText(QString::fromLocal8Bit("已申请退单的订单\r\n请先拒绝退单再取餐!"));
......
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